{ "cells": [ { "cell_type": "markdown", "id": "39742f80-51b9-4264-896b-a53fd5fa0460", "metadata": {}, "source": [ "# Scripting a renderer" ] }, { "cell_type": "markdown", "id": "31557f88", "metadata": {}, "source": [ "## Overview\n", "\n", "Mitsuba provides a flexible API that allows developing custom rendering pipelines that largely bypass the high-level interfaces and machinery used in the previous tutorials. This enables the use of the Mitsuba to rapidly prototype new and unconventional applications, while still leveraging the high performance JIT compiler and integrated ray acceleration data structures.\n", "\n", "In this example, we are going to implement an ambient occlusion renderer that mostly avoids using built-in plugins (e.g., does not use existing sensor and film interfaces). This tutorial can serve as a starting point for more advanced custom rendering methods.\n", "\n", "
\n", "\n", "🚀 **You will learn how to:**\n", " \n", "\n", " \n", "
\n" ] }, { "cell_type": "markdown", "id": "211b789b-edc5-4343-8ff5-8468b127a36a", "metadata": {}, "source": [ "## Setup\n", "\n", "Like in the previous tutorials, we start by importing the Mitsuba and DrJit and loading a scene." ] }, { "cell_type": "code", "execution_count": 1, "id": "6f2edef8", "metadata": {}, "outputs": [], "source": [ "import mitsuba as mi\n", "import drjit as dr\n", "\n", "mi.set_variant('llvm_ad_rgb')\n", "\n", "scene = mi.load_file('../scenes/cbox.xml')" ] }, { "cell_type": "markdown", "id": "dfafe465", "metadata": {}, "source": [ "While it is possible to use Mitsuba in `scalar` mode, it is highly recommended to stick to the JIT-compiled variants of the system (i.e., `llvm` or `cuda`) for performance critical applications implemented using the Python API. In `scalar` mode, we would pay the overhead of the Python binding layer for every function call on every individual sample/ray in our simulation. Using a JIT-compiled variant largely eliminates any Python related overheads and allows the system to efficiently use the available hardware." ] }, { "cell_type": "markdown", "id": "085a070a-9621-4808-ab1c-670c1549f0a4", "metadata": {}, "source": [ "## Spawning rays\n", "\n", "In this tutorial, we replace large parts of Mitsuba's high-level rendering pipeline by relatively low level Python code to demonstrate the system's flexibility. We start by implementing a camera model and corresponding ray generation routine. In this experiment, we will implement a simple orthographic camera, given the following parameters:" ] }, { "cell_type": "code", "execution_count": 2, "id": "ce2f2ddf", "metadata": {}, "outputs": [], "source": [ "# Camera origin in world space\n", "cam_origin = mi.Point3f(0, 1, 3)\n", "\n", "# Camera view direction in world space\n", "cam_dir = dr.normalize(mi.Vector3f(0, -0.5, -1))\n", "\n", "# Camera width and height in world space\n", "cam_width = 2.0\n", "cam_height = 2.0\n", "\n", "# Image pixel resolution\n", "image_res = [256, 256]" ] }, { "cell_type": "markdown", "id": "bf5bb44b-ae69-4af8-8219-99b0dc2c9e80", "metadata": {}, "source": [ "We will now spawn a whole wavefront of camera rays that can be processed all at once in a vectorized way. We first generate ray origins in the camera's local coordinate frame using `dr.meshgrid` and `dr.linspace`. These functions behave similarly to their equivalents in NumPy. We construct a 2D grid of ray origins based on the camera's physical dimensions (`cam_height`, `cam_width`) and image resolution (`image_res`).\n", "\n", "The ray origins in local coordinates then need to be transformed into world space to account for the camera's viewing direction and 3D position. We first construct a coordinate frame ([mi.Frame3f][1]) that is oriented in the camera's viewing direction. Using its [to_world()][2] method we rotate our ray origins into world space and finally add the camera's world space position.\n", "\n", "[1]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.Frame3f\n", "[2]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.Frame3f.to_world" ] }, { "cell_type": "code", "execution_count": 3, "id": "380f4d14-2afb-4e88-8d2c-b572e2511a35", "metadata": {}, "outputs": [], "source": [ "# Construct a grid of 2D coordinates\n", "x, y = dr.meshgrid(\n", " dr.linspace(mi.Float, -cam_width / 2, cam_width / 2, image_res[0]),\n", " dr.linspace(mi.Float, -cam_height / 2, cam_height / 2, image_res[1])\n", ")\n", "\n", "# Ray origin in local coordinates\n", "ray_origin_local = mi.Vector3f(x, y, 0)\n", "\n", "# Ray origin in world coordinates\n", "ray_origin = mi.Frame3f(cam_dir).to_world(ray_origin_local) + cam_origin" ] }, { "cell_type": "markdown", "id": "276e3b15-b26f-45f9-a5d9-86aeaa7bab6e", "metadata": {}, "source": [ "We can now assemble a wavefront of world space rays that will later be traced in our rendering algorithm." ] }, { "cell_type": "code", "execution_count": 4, "id": "f1f7eb35-b6c9-48ed-8876-1dc595d391a4", "metadata": {}, "outputs": [], "source": [ "ray = mi.Ray3f(o=ray_origin, d=cam_dir)" ] }, { "cell_type": "markdown", "id": "835e6bbe-8d62-45b5-b946-ca532d2011ce", "metadata": {}, "source": [ "We then intersect those primary rays against the scene geometry to compute the corresponding surface interactions (of type [SurfaceInteraction3f][1]).\n", "\n", "[1]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.SurfaceInteraction3f" ] }, { "cell_type": "code", "execution_count": 5, "id": "ab0d9f87-33ad-4724-aa4e-d277bec3ba84", "metadata": {}, "outputs": [], "source": [ "si = scene.ray_intersect(ray)" ] }, { "cell_type": "markdown", "id": "23b19c52-7b1b-4613-ba0b-89bcb1dbacb2", "metadata": {}, "source": [ "## Ambient occlusion\n", "\n", "Ambient occlusion is a rendering technique that calculates the average local occlusion of surfaces. For a point on the surface, we trace a set of rays (`ambient_ray_count`) in random directions on the hemisphere and compute the fraction of rays that intersect another surface within a specific maximum range (`ambient_range`)." ] }, { "cell_type": "code", "execution_count": 6, "id": "ab3a2bcc-1c7a-42d8-bb88-2049ae70874f", "metadata": {}, "outputs": [], "source": [ "ambient_range = 0.75\n", "ambient_ray_count = 256" ] }, { "cell_type": "markdown", "id": "d8c7115e-f9bd-45d5-9f0d-3bd48fabadb5", "metadata": {}, "source": [ "To sample random directions on the hemisphere, we need to instantiate a random number generator. Instead of using an existing `Sampler` plugin, we directly use the [PCG32][1] class that is provided by DrJit. This random number generator is initialized using the size of our wavefront of rays. We can then call [rng.next_float32()][2] to sample uniformly distributed random numbers in $[0, 1)$.\n", "\n", "[1]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.PCG32\n", "[2]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.Sampler.next_float32" ] }, { "cell_type": "code", "execution_count": 7, "id": "3f048def-b943-4f22-9b6d-60428acfa781", "metadata": {}, "outputs": [], "source": [ "# Initialize the random number generator\n", "rng = mi.PCG32(size=dr.prod(image_res))" ] }, { "cell_type": "markdown", "id": "064bcbfa-c816-4693-9b09-4703cca2671e", "metadata": {}, "source": [ "In the following code, we loop over ambient occlusion samples and use `mi.Loop` for performance reasons (see the [DrJIT documentation][1] for details).\n", "\n", "The loop body of this algorithm is fairly simple: \n", "\n", "1. We first draw two random numbers from the `PCG32` instance. \n", "2. We use those random numbers to sample directions on the hemisphere (in local coordinates, where the z-axis is aligned to the surface normal). \n", "3. Those directions then need to be transformed to world space using the local coordinate frame of the surface. The surface interaction record `si` ([SurfaceInteraction3f][2]) stores this local coordinate frame ([Frame3f][3]) which can be used for this transformation.\n", "4. We then spawn probe rays into the sampled world space direction using `si.spawn_ray(...)`. This method implements some logic to prevent self-intersection with the surface at `si`. It should always be preferred over constructing the ray manually in such situations.\n", "5. We set the ambient occlusion ray's `maxt` value to only find occluders in the provided maximum range.\n", "6. We accumulate a value of `1.0` if the ray did not intersect any scene geometry.\n", "7. Finally we increment the loop iteration counter and move on to the next iteration.\n", "\n", "After the loop, we divide the result by the number of ambient occlusion samples to get the average occlusion.\n", "\n", "[1]: https://drjit.readthedocs.io\n", "[2]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.SurfaceInteraction3f\n", "[3]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.Frame3f" ] }, { "cell_type": "code", "execution_count": 8, "id": "66ec9173", "metadata": {}, "outputs": [], "source": [ "# Loop iteration counter\n", "i = mi.UInt32(0)\n", "\n", "# Accumulated result\n", "result = mi.Float(0)\n", "\n", "# Initialize the loop state (listing all variables that are modified inside the loop)\n", "loop = mi.Loop(name=\"\", state=lambda: (rng, i, result))\n", "\n", "while loop(si.is_valid() & (i < ambient_ray_count)):\n", " # 1. Draw some random numbers\n", " sample_1, sample_2 = rng.next_float32(), rng.next_float32()\n", " \n", " # 2. Compute directions on the hemisphere using the random numbers\n", " wo_local = mi.warp.square_to_uniform_hemisphere([sample_1, sample_2])\n", "\n", " # Alternatively, we could also sample a cosine-weighted hemisphere\n", " # wo_local = mi.warp.square_to_cosine_hemisphere([sample_1, sample_2])\n", " \n", " # 3. Transform the sampled directions to world space\n", " wo_world = si.sh_frame.to_world(wo_local)\n", "\n", " # 4. Spawn a new ray starting at the surface interactions\n", " ray_2 = si.spawn_ray(wo_world)\n", " \n", " # 5. Set a maximum intersection distance to only account for the close-by geometry\n", " ray_2.maxt = ambient_range\n", "\n", " # 6. Accumulate a value of 1 if not occluded (0 otherwise)\n", " result[~scene.ray_test(ray_2)] += 1.0\n", " \n", " # 7. Increase loop iteration counter\n", " i += 1\n", "\n", "# Divide the result by the number of samples\n", "result = result / ambient_ray_count" ] }, { "cell_type": "markdown", "id": "5f2c7c4f-5412-411d-957a-c5986d9e2e2b", "metadata": {}, "source": [ "## Displaying the result\n", "\n", "The algorithm above accumulated ambient occlusion samples in a 1-dimensional array `result`. To work with this result as an image, we construct a [TensorXf][1] using the image resolution specified earlier. \n", "\n", "[1]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.TensorXf" ] }, { "cell_type": "code", "execution_count": 9, "id": "10dc99f4", "metadata": { "tags": [] }, "outputs": [], "source": [ "image = mi.TensorXf(result, shape=image_res)" ] }, { "cell_type": "markdown", "id": "cf9f7155-ced4-4400-9eed-f24369c2a4ea", "metadata": {}, "source": [ "Now let's visualize our ambient occlusion rendering!" ] }, { "cell_type": "code", "execution_count": 10, "id": "3d571d44-6e7c-432d-9cb2-688fe99cec74", "metadata": { "nbsphinx-thumbnail": {}, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.imshow(image, cmap='gray'); plt.axis('off');" ] }, { "cell_type": "markdown", "id": "c41f4d95-fb05-4ee8-a51f-95d49b34b387", "metadata": { "tags": [] }, "source": [ "## See also\n", "\n", "- [mitsuba.Sampler][1]\n", "- [mitsuba.PCG32][2]\n", "- [mitsuba.warp.square_to_uniform_hemisphere()][3]\n", "- [mitsuba.SurfaceInteraction3f.spawn_ray()][4]\n", "\n", "[1]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.Sampler\n", "[2]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.PCG32\n", "[3]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.warp.square_to_uniform_hemisphere\n", "[4]: https://mitsuba.readthedocs.io/en/latest/src/api_reference.html#mitsuba.SurfaceInteraction3f.spawn_ray" ] } ], "metadata": { "celltoolbar": "Edit Metadata", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }