Experimental raytracer implemented with the AnyDSL compiler framework for CPU and GPU
743
'Ignis' is a raytracer for the RENEGADE project implemented using the Artic frontend of the AnyDSL compiler framework (https://anydsl.github.io/) and based on Rodent (https://github.com/AnyDSL/rodent).
The frontends of the raytracer communicate with the user and the underlying runtime. Currently, four frontends are available:
igview This is the standard UI interface which displays the scene getting progressively rendered. This frontend is very good to get a first impression of the rendered scene and fly around to pick the one best camera position. Keep in mind that some power of your underlying hardware is used to render the UI and the tonemapping algorithms. Switching to the UI-less frontend igcli might be a good idea if no preview is necessary. Keep in mind that X11 with docker is experimental.igcli The commandline only frontend is the same as igview but without any UI specific features and no interactive controls. In contrary to igview, igcli requires a maximum iteration or time budget to be specified by the user. Progressive rendering is not that useful without a preview. (We might add progressive rendering back, but I need a convincing argument for that...)igtrace This commandline only frontend ignores camera specific information and expects a list of rays from the user. It returns the contribution back to the user for each ray initially specified.Python API This simple python API allows to communicate with the runtime and allows you to work with the raytracer in interactive notebooks and more. The API is only available if Python3 was found in the system.Use the --help argument on each of the executables to get information of possible arguments for each frontend. Also have a look at the Wiki(TODO) and Website(TODO) for more in-depth information.
As resources have to be loaded and exported it is necessary to read&write mount a volume to let the corresponding frontend access the data.
Example for igcli
docker run -v ~/scenes:/scenes -it pearcoding/ignis:latest-cpu /scenes/diamond_scene.json --spp 1024 -o /scenes/output/test.exr
Example for igtrace
docker run -v ~/scenes:/scenes --entrypoint igtrace -it pearcoding/ignis:latest-cpu /scenes/diamond_scene.json
The usage of igview is still experimental as a X11 server is required.
To use the cuda docker flavour have a look at the userguide from NVIDIA: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html and https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
Ignis uses a JSON based flat scene description with instancing. Support for shading nodes is planned. Image and procedural texture support is available.
You might use the mts2ig to convert a Mitsuba scene description to our own format. Keep in mind that this feature is very experimental and not all BSDFs work out of the box.
You can also use rad2json to convert geometry used in the Radiance framework to our tool. Keep in mind that no BSDF and lights are mapped as the two raytracers are vastile different in these regards.
Ignis is able to understand glTF files. You can embed glTF files in Ignis's own scene description file or directly use the glTF file as an input to the multiple frontends.
A Blender plugin is planned for the future.
Two tiny tools exr2hdr and hdr2exr are available to convert between the Radiance favorite image format HDR to the advanced OpenEXR format and vice versa.
Actually, the tool might convert from any format the stb_image framework supports to the second format...
igviewThe Ignis client has an optional UI and multiple ways to interact with the scene:
1..9 number keys to switch between views.1..9 and Strg/Ctrl to save the current view on that slot.F1 to toggle the help window.F2 to toggle the UI.F3 to toggle the interaction lock. If enabled, no view changing interaction is possible.F11 to save a snapshot of the current rendering. HDR information will be preserved. Use with Strg/Ctrl to make a LDR screenshot of the current render including UI and tonemapping. The image will be saved in the current working directory.R to reset to initial view.P to pause current rendering. Also implies an interaction lock.T to toggle automatic tonemapping.G to reset tonemapping properties. Only works if automatic tonemapping is disabled.F to increase (or with Shift to decrease) tonemapping exposure. Step size can be decreased with Strg/Ctrl. Only works if automatic tonemapping is disabled.V to increase (or with Shift to decrease) tonemapping offset. Step size can be decreased with Strg/Ctrl. Only works if automatic tonemapping is disabled.WASD or arrow keys to travel through the scene.Q/E to roll the camera around the viewing direction.PageUp/PageDown to pan the camera up and down.Notepad +/- to change the travel speed.Numpad 1 to switch to front view.Numpad 3 to switch to side view.Numpad 7 to switch to top view.Numpad 9 to look behind you.Numpad 2468 to rotate the camera.Strg/Ctrl to rotate the camera around the center of the scene. Use with Alt to enable first person camera behaviour.Content type
Image
Digest
sha256:3cf022b1f…
Size
622.2 MB
Last updated
over 2 years ago
docker pull pearcoding/ignis:latest-cpu