Kray for developers is a set of dynamically linked libraries that allows programmers to connect any modelling application to the Kray rendering engine.

Key features:

  • Availability
    • available for anyone, works with demo version
    • anyone can start development
  • Portability
    • client binary versions available for Windows and MacOS
    • developer versions for Android, Unixes and clones
    • still can run on its initial developement platform – AmigaOS
    • easily portable to any platform with C++ compiler
    • JavaScript version that runs on host side of modern web browsers (compiled with Emscripten, single thread speed close to native, but no multithreading support yet)
    • Java version (compiled with LLJVM, much slower than native version)
  • API
    • client side API written in C++ with source code available – anyone can port it anywhere
    • available wrappers for
      • C
      • Ruby
      • Pascal
      • JavaScript
      • Java Native Interface
  • Filesystem and networking
    • build in ram disk (for temporary files storage)
    • build in FTP client and server (for fetching scene files, and serving render results)
    • build in HTTP client (for fetching scene files)
    • build in Telnet client (for communitating with host application)
    • flexible search path system integrated with network accessing
  • Kray script
    • primary communication interface with Kray engine
    • C like syntax
    • three parse modes
      1. user readable
        • most readable
        • variables, expressions, functions, classes, objects
        • many useful operations like vector/matrices maths, string operations
      2. literal only
        • much faster parsing, for machine generated scripts
        • human readable
        • serializable
      3. binary mode
        • difficult to read by humans
        • most useful when host app and Kray share the same memory space
        • fastest
    • self documenting
      • can generate all commands script prototypes (help command)
      • can generate C++ prototypes
      • can generate HTML doc
  • Render preview interface
    • all text/graphics output and user input messages can be captured by host application
    • allows customized handling of render preview in operating system independent way