This site has been permanently archived. The content on this site was last updated in 2019.
Daydream Renderer
Stay organized with collections
Save and categorize content based on your preferences.

Daydream Renderer is a Unity package designed for high-quality rendering
optimized for the Daydream platform. Daydream Renderer is best for scenes that
make significant use of dynamic lights, normal maps, shadows, or environmental
maps. For example, a photorealistic environment or a stylized environment with
highly detailed surfaces (i.e. not flat shaded).
Daydream Renderer is available on GitHub.
The latest Unity package release can be found in the releases section.
Key features
- Single pass rendering.
- Supports surfaces with normal maps and specular highlights influenced by up
to 8 dynamic lights with a fixed fragment shader cost.
- Normal mapped specular approximation including optional
optimizations such as monochromatic specular color.
- 1 - 4 per-object "hero shadows" with cheap but effective filtering.
- Vertex based static lighting solution that seamlessly integrates with
dynamic lighting and fully supports normal
mapping and approximated specular.
Use cases
Daydream Renderer can help you out in the following scenarios:
- You need many dynamic lights in the scene and still want to render everything in a single pass.
- Your art style requires per-pixel lighting with support for normal maps and specular.
- You want to use performant dynamic shadows, limited to a small number of shadow casters (e.g. player character and key NPCs).
- You have a finely tessellated scene and want more performant static lighting solution.
- Your light bakes are taking too long and you would like to improve bake times.
- You're planning to write custom shaders for your app and are looking for a starting point.
- You want performant reflections from static environment maps.
High quality mobile VR apps target high resolution displays which require rendering a large
number of pixels, must target 60 fps, and must draw everything twice. This puts a
lot of strain on the device GPU, CPU, and the data bus. Daydream Renderer makes
the most of these limited resources by avoiding common bottlenecks:
- Daydream Renderer offloads much of the lighting computation from pixel shaders
to vertex shaders.
- A typical Daydream app has approximately ten times more pixels than vertices so moving computation
from pixel to vertex shader is an order-of-magnitude savings.
- Daydream Renderer doesn’t redraw objects for every light influence, which
significantly reduces the total number of draw calls used.
- Daydream Renderer shaders are optimized to limit the number of texture
look-ups to a maximum of two, which avoids shader pipeline stalls.
- Daydream Renderer allows for some post-process effects without an extra
rendering pass by appending the calculation to the end of the pixel
shader.
Trade-offs
Daydream Renderer makes some tradeoffs in exchange for performance gains:
- Per-pixel lighting is approximated, which can cause unexpected lighting
artifacts especially in scenes without a lot of tesselation.
- Some functionality from the Unity standard shaders is lost.
Please consult README.md for detailed instructions and documentation.
All rights reserved. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-10-09 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-09 UTC."],[[["\u003cp\u003eDaydream Renderer is a Unity package that delivers high-quality rendering optimized for the Daydream platform, especially beneficial for scenes with dynamic lights, normal maps, shadows, or environmental maps.\u003c/p\u003e\n"],["\u003cp\u003eIt achieves performance improvements by offloading lighting computations to vertex shaders, reducing draw calls, and limiting texture look-ups.\u003c/p\u003e\n"],["\u003cp\u003eKey features include single pass rendering, support for normal maps and specular highlights with up to 8 dynamic lights, and efficient dynamic shadows for a limited number of objects.\u003c/p\u003e\n"],["\u003cp\u003eWhile offering performance gains, Daydream Renderer uses approximated per-pixel lighting which may introduce artifacts and lacks some functionalities present in Unity standard shaders.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can find detailed instructions and documentation in the README.md file on the GitHub repository.\u003c/p\u003e\n"]]],["Daydream Renderer, a Unity package on GitHub, optimizes rendering for the Daydream platform, especially for scenes with dynamic lights, normal maps, shadows, or environmental maps. It features single-pass rendering, supports up to eight dynamic lights, normal-mapped specular highlights, and 1-4 per-object shadows. It offloads lighting calculations from pixel to vertex shaders, avoids redrawing objects per light, and limits texture look-ups. While it offers performance gains, it trades off per-pixel lighting accuracy and some standard shader functionality.\n"],null,["# Daydream Renderer is a Unity package designed for high-quality rendering\noptimized for the Daydream platform. Daydream Renderer is best for scenes that\nmake significant use of dynamic lights, normal maps, shadows, or environmental\nmaps. For example, a photorealistic environment or a stylized environment with\nhighly detailed surfaces (i.e. not flat shaded).\n\nDaydream Renderer is available on [GitHub](https://github.com/googlevr/daydream-renderer-for-unity).\nThe latest Unity package release can be found in the [releases section](https://github.com/googlevr/daydream-renderer-for-unity/releases).\n\nKey features\n------------\n\n- Single pass rendering.\n- Supports surfaces with normal maps and specular highlights influenced by up to 8 dynamic lights with a fixed fragment shader cost.\n- Normal mapped specular approximation including optional optimizations such as monochromatic specular color.\n- 1 - 4 per-object \"hero shadows\" with cheap but effective filtering.\n- Vertex based static lighting solution that seamlessly integrates with dynamic lighting and fully supports normal mapping and approximated specular.\n\nUse cases\n---------\n\nDaydream Renderer can help you out in the following scenarios:\n\n- You need many dynamic lights in the scene and still want to render everything in a single pass.\n- Your art style requires per-pixel lighting with support for normal maps and specular.\n- You want to use performant dynamic shadows, limited to a small number of shadow casters (e.g. player character and key NPCs).\n- You have a finely tessellated scene and want more performant static lighting solution.\n- Your light bakes are taking too long and you would like to improve bake times.\n- You're planning to write custom shaders for your app and are looking for a starting point.\n- You want performant reflections from static environment maps.\n\nPerformance improvements\n------------------------\n\nHigh quality mobile VR apps target high resolution displays which require rendering a large\nnumber of pixels, must target 60 fps, and must draw everything twice. This puts a\nlot of strain on the device GPU, CPU, and the data bus. Daydream Renderer makes\nthe most of these limited resources by avoiding common bottlenecks:\n\n- Daydream Renderer offloads much of the lighting computation from pixel shaders to vertex shaders.\n- A typical Daydream app has approximately ten times more pixels than vertices so moving computation from pixel to vertex shader is an order-of-magnitude savings.\n- Daydream Renderer doesn't redraw objects for every light influence, which significantly reduces the total number of draw calls used.\n- Daydream Renderer shaders are optimized to limit the number of texture look-ups to a maximum of two, which avoids shader pipeline stalls.\n- Daydream Renderer allows for some post-process effects without an extra rendering pass by appending the calculation to the end of the pixel shader.\n\nTrade-offs\n----------\n\nDaydream Renderer makes some tradeoffs in exchange for performance gains:\n\n- Per-pixel lighting is approximated, which can cause unexpected lighting artifacts especially in scenes without a lot of tesselation.\n- Some functionality from the Unity standard shaders is lost.\n\nFurther information\n-------------------\n\nPlease consult [README.md](https://github.com/googlevr/daydream-renderer-for-unity/blob/master/README.md) for detailed instructions and documentation."]]