Fine tuning with Lightmap Parameters

Проверено с версией:: 5.5

-

Сложность: Средняя

Many of the advanced lightmapping controls offered by Unity are available through the use of Lightmap Parameters. These settings are stored within a Lightmap Parameters asset. This allows lighting settings to be shared between Scenes and version controlled for shared use in collaborative team environments.

  • To create a Lightmap Parameters Asset, navigate to the Project window.

  • From the Create drop-down menu in the top left of the Project window, choose (Create > Lightmap Parameters).

  • We can also create a Lightmap Parameters asset from the right-click menu within the Project window, or from the top menu bar (Asset > Create > Lightmap Parameters).

description

Advanced controls for both Baked GI and Precomputed Realtime GI are made available through Lightmap Parameters.

Once created, a Lightmap Parameters asset can then be assigned to a Static MeshRenderer component.

  • Select the GameObject that we wish to assign the Lightmap Parameters asset to in the Hierarchy window. The GameObject must be marked as Static and have a MeshRenderer component.

  • Open the Lighting window (Window > Lighting) and select the Object tab.

  • Use the Advanced Parameters drop-down menu to assign the Lightmap Parameters Asset to the GameObject. The ‘Edit’ button to the right of the Advanced Parameters drop-down menu can be used as a shortcut to modifying the Lightmap Parameters assigned to the selected object.

description

Lightmap Parameters are assigned using the Advanced Parameters drop-down from the Object tab of the Lighting window.

The same Lightmap Parameters asset can be assigned to multiple objects. To do this, select multiple objects in the Hierarchy window and then follow the steps above. Changes to this Lightmap Parameter asset will then affect all objects to which it is assigned.

Lightmap Parameters: per-instance or per-Prefab?

Similar to unwrap settings, Lightmap Parameters assets can be assigned to a Prefab or applied to individual GameObject instances within the Scene. Lightmap Parameters assets applied to an instance of a Prefab in a Scene will override the Lightmap Parameters asset stored in the Prefab.

The advantage of this approach is that default Lightmap Parameters that are suitable for most cases can be applied to the Prefab. These defaults can then be overridden on a case-by-case basis in the Scene when more fine-grained control is needed.

In this tutorial, we have chosen to apply Lightmap Parameters assets on a per-instance basis. This is because we want to select different Lightmap Parameters assets depending on the context in which each GameObject is used.

Default Parameters

It is possible to configure Scene-wide default Lightmap Parameters. These default Lightmap Parameters will be assigned to all existing MeshRenderers within a Scene not already assigned a Lightmap Parameters asset. Any MeshRenderers that are then created in the Scene will also use the default Lightmap Parameters. Using this approach reduces the amount of manual assignment which needs to be performed when setting up a Scene for lighting.

  • Open the Lighting window (Window > Lighting) and select the Scene tab.

  • Use the Default Parameters drop-down menu to assign the Lightmap Parameters asset to the Scene.

Note that although this Default Parameter will be applied to all newly created objects, it can still be overridden on individual objects by assigning an Advanced Parameter to the object, as described above.

description

The Default Parameters will be assigned to all newly-created Static Mesh Renders.

Unity provides a number of preconfigured Lightmap Parameters to help quickly set up Scene lighting. These are:

  • Default - HighResolution

  • Default - Medium

  • Default - LowResolution

  • Default - VeryLowResolution

Assigning one of these Lightmap Parameters will configure a number of settings that determine the overall lighting cost of the selected object. These settings include lightmap resolution, global illumination parameters and Cluster resolution, amongst other advanced per-object settings. These are important factors when trying to balance lighting performance throughout a Scene.

Lightmap Parameters explained

Unity’s Default Parameters are intended to cover a number of common use cases and will be generally enough for many lighting scenarios. More fine-grained control over the Precomputed Realtime GI system can be achieved by creating our own Lightmap Parameters assets.

The Unity Manual page on Lightmap Parameters provides an overview of all of the settings contained within the Lightmap Parameters asset. However, in this tutorial, we will focus on the settings that are most useful for lighting optimization.

Resolution

The Resolution value determines the lightmap resolution required by objects using this Lightmap Parameter. Resolution is a multiplier used against the Scene-wide Realtime Resolution specified in the Scene tab of the Lighting window. For example, if the Scene’s Realtime Resolution is set to 2, and the Resolution property is set to 0.5, any objects which are assigned this Lightmap Parameter will use 1 texel per unit in the resulting lightmap texture.

As Precomputed Realtime GI represents only the diffuse, indirect lighting within a Scene, we do not need to use the resolutions required by traditional baked lightmapping approaches. The lightmap resolution required by Precomputed Realtime GI will generally be 2-3 texels per unit as a maximum, as opposed to the 20-30 texels per unit we might use in traditional lightmapping. In most cases, particularly with large outdoor objects such as terrains, this value can be many times lower still. Here, a lightmap resolution as low as 0.1 texels per unit may provide sufficient detail.

description

Dappling artefacts when using high resolution lightmaps can be alleviated by increasing the Irradiance Budget value.

Bear in mind that when using very high lightmap resolutions, artefacts which are otherwise not noticeable at lower resolutions may become an issue. These artefacts may appear as dappling or smudged lighting in the resulting lightmap texture. If this happens, increasing the Irradiance Budget in your Lightmap Parameters can often reduce the appearance of such issues.

Cluster Resolution

Cluster Resolution specifies the number of Clusters that can fit within a texel of a Precomputed Realtime GI lightmap. For example, if Cluster Resolution is set to the maximum of 1 there would be 1 Cluster for each texel within the lightmap. A Cluster Resolution value of 0.5 would mean that only 0.5 Clusters would fit inside the lightmap texel. In other words, the Cluster would be twice the size of a lightmap texel.

Extending this idea further, imagine our Scene’s global Realtime Resolution was set to 1. We create a cube with a size of 1x1x1 units, and then assign a Lightmap Parameters asset to this object. If our Lightmap Parameters asset specified a Resolution of 1 and a Cluster Resolution of 1, we would have 1 Cluster per side of the cube. If we then increased our Resolution to 2, the result would be 2x(1x1) Clusters per side of the cube, giving 4 Clusters.

description

Image showing a 1x1x1 unit cube in a Scene with a Realtime Resolution of 1. The assigned Lightmap Parameters specify a Cluster Resolution of 1 Cluster per texel. Therefore with a lightmap Resolution of 2 texels per unit, we have 4 Clusters per face.

In most cases, Cluster Resolution only needs to be a fraction of the size of our lightmap texels. For example, the Default - HighResolution Lightmap Parameters asset which ships with Unity has a Cluster Resolution of 0.6.

A high number of Clusters in a Scene can quickly drive up precompute times and reduce the interactivity of the Scene’s global illumination at run time. We must therefore ensure that using more Clusters offers some tangible benefit to the quality of the lightmap output. If we can use fewer Clusters without a detrimental effect to our lightmaps, then this is always preferential.

Specifying the Resolution of a lightmap and Cluster Resolution as a ratio means that we can build a relative relationship with the Scene-wide Realtime Resolution value. We can use the Realtime Resolution defined in the Lighting window as a high-level resolution value for the overall Scene. Lightmap Parameters are then used to exert fine-grained control over individual objects or groups of objects.

Unity takes this hierarchical approach in order to offer more global control to the user. If it was necessary to specify an absolute value for Resolution and Cluster Resolution, every Lightmap Parameter within a Project would have to be reconfigured by hand should we want to modify the overall lighting resolution.

Irradiance Budget

We discussed earlier in the tutorial how Unity calculates Precomputed Realtime GI by generating an approximation of a Scene’s Static geometry using Clusters. During the precompute, the relationships between these Clusters are calculated so that light can be quickly propagated throughout this hierarchical network.

Essentially, the value of a lightmap texel is determined by taking a ‘view’ of the Scene Clusters from the texel’s position. This allows us to quickly calculate light bounce between Clusters in order to create the effect of global illumination. These Clusters can then be sampled into lightmaps before finally being rendered.

Irradiance Budget determines the amount of memory used by each lightmap texel when sampling the Cluster network. This determines the precision (accuracy) of the lighting result. A lower Irradiance Budget means that each texel uses less memory when recording this view of the Scene. This results in both reduced memory use and lower CPU cost at run time, but at at the cost of lighting fidelity. Lower Irradiance Budgets will result in a more lower frequency (blurred) lighting result. In contrast, a higher Irradiance Budget will deliver more accurate GI, but increased memory usage and additional CPU overhead at run time.

If our Precomputed Realtime GI is not updating quickly enough (lagging) during run time, it may be beneficial to lower the Irradiance Budget. This is best employed on objects where the advantages of higher fidelity lighting are perhaps not so noticeable, such as large, obscured or distant geometry.

Irradiance Quality

When Precomputed Realtime GI lightmaps are generated during the precompute, each lightmap texel fires rays into the Scene in order to report the visibility of nearby Clusters. The percentage of each Cluster that the texel can see is then calculated. This value is used when determining the lighting contribution of visible Clusters to each texel in the lightmap. Irradiance Quality specifies the number of rays that a texel is able to shoot during this process.

Increasing Irradiance Quality should be considered in situations where objects do not accurately match the lighting conditions of their surroundings. Sometimes situations can arise where lightmap texels have an unexpectedly bright result. This may be because insufficient rays have been cast into the Scene and therefore Clusters which may occlude a lightmap texel have been missed. Similarly, brighter Clusters might not have been detected. Here, the lightmap result will be unexpectedly dark.

Firing more rays increases the likelihood that an accurate representation of the surrounding Clusters is reported back. These improvements to the accuracy of the lightmap output come at the expense of increased precomputation time. To optimize precomputation times, we should use the minimum Irradiance Quality needed to achieve the lighting results we want. Note that this value does not affect run time performance.

Backface Tolerance

Rays fired from lightmap texels can sometimes hit backfacing geometry when gathering lighting from the Scene Clusters. When generating global illumination we are only concerned with the light which bounces from faces which are visible to the world. Light coming from backfacing geometry is always considered invalid. These backface hits have the potential to corrupt or otherwise invalidate the lighting result. Modifying the Backface Tolerance is a way to prevent such situations arising.

description

Here the dark lightmap texels on the floor are created by invalid backface hits during Unity’s radiosity calculations. Increasing the Backface Tolerance settings can be a solution to this problem.

Backface Tolerance specifies a percentage of light that must come from front-facing geometry in order for a texel to be considered valid. If a lightmap texel fails this test, Unity will use the values of neighbouring texels to approximate a correct lighting result.

Modifying Backface Tolerance does not affect the optimization of your Precomputed Realtime GI. Changing this value will not have a great impact on the length of your precompute or affect run time performance. However Backface Tolerance is useful as a troubleshooting tool in situations where you have erroneous dark or light texels which remain despite increasing the Irradiance Budget.

Modelling Tolerance

Unwanted artefacts, such as black halos, can sometimes appear in areas where there are small gaps in the Static geometry within your Scene. This can happen particularly in areas where there is opposing geometry in close proximity. Objects on a floor, for example.

description

Dark fringing artefacts such as there can often be fixed by increasing the Modelling Tolerance.

In these situations, there is a small gap between the object and the opposing surface where little or no light can enter. Very dark texels may be recorded in the lightmaps underneath. At lower lightmap resolutions, the size of the dark texels can mean they extend beyond the boundary of the occluding object and may cause some unwanted black fringing. In the context of lighting, the shadow values these small objects create may be unwanted or otherwise considered as noise.

Modelling Tolerance is used to ignore details smaller than the threshold value. Increasing this value will ensure that Unity’s GI calculations ignore parts of geometry which exist very near another surface. Higher values will force the Light Transport task of the precompute to ignore gaps smaller than this percentage of a lightmap texel. Decreasing the Modeling Tolerance ensures that smaller objects remain considered by the GI calculations.

Modelling tolerance does not affect the optimization of Precomputed Realtime GI. It does not negatively affect precompute times or run time performance. However it can be used when troubleshooting unwanted visual artefacts. Modelling Tolerance may be useful if artefacts remain despite increasing other values such as Irradiance Budget or Irradiance Quality.

Building our Lightmap Parameters assets

Now that we have explored what the various Lightmap Parameters settings provide in terms of functionality, it is time to start applying this knowledge by building our own Lightmap Parameters assets and using them in the tutorial Scene.

  • Open the LightingTutorialStart Scene.

  • In the Project window, navigate to the folder Assets > LightmapParameters.

  • In the top left of the Project window, choose Create > Lightmap Parameters.

  • Name this newly created Lightmap Parameters asset TutorialTerrainLow.

description

The GameObjects are very large in scale and distant from the Camera, this is good case for selecting Lightmap Parameters other than the Scene default.

Next, we are going to assign this Lightmap Parameters asset to objects within the Scene.

  • In the Scene view, select the two mountain GameObjects that are nearest to the playable area. These are both named MountainPeak. Note that we will ignore the furthest mountain for now.

  • Using the Inspector panel, ensure that both MountainPeak GameObjects are flagged as Static. This is indicated by the checkbox marked Static.

  • Open the Lighting window (Window > Lighting) and then select the Scene tab.

  • Ensure that Auto mode is enabled. This is indicated by the checkbox marked Auto.

  • Now select the object Object tab.

  • From the Advanced Parameters drop-down menu, select the newly created TutorialTerrainLow Lightmap Parameters asset. This will assign the Lightmap Parameters asset to the selected GameObjects.

  • Click the Edit button to the right of the Advanced Parameters drop-down menu to begin editing the settings.

description

The default settings when creating a new Lightmap Parameter.

The first parameter that we will look at is Resolution. Reducing the resolution of lightmaps improves both precompute times and run time performance, so we should aim to use the lowest Resolution value that we can without affecting the quality of the lighting.

A higher lightmap resolution is suitable for objects that will be seen up close, but the two instances of MountainPeak are both relatively distant from the Camera. Other factors suggest that a low lightmap resolution would be suitable here. These large objects are generally fairly consistent in the albedo of their materials. Additionally, from the camera’s perspective, there will be little variance in the color of light received by these objects given their scale. Without much lighting detail to capture, we reduce the resolution of these objects’ lightmaps without affecting the quality of the result.

description

For large scenery objects such as mountains and terrain,the default lightmap resolution would be wasteful.

description

Using a lower resolution can be a great saving in precompute and run time performance with little detriment to the perceived quality of the lighting result.

  • Try slowly decreasing the Resolution parameter of the TutorialTerrainLow Lightmap Parameters asset and observe the changes to the lightmap resolution in the Scene view.

Remember, the Resolution value is a multiplier against the Scene-wide Realtime Resolution defined in the Scene tab of the Lighting window. In our Scene, we have opted for a Realtime Resolution of 1. Therefore, if we then chose a Resolution value of less than 1 in our Lightmap Parameters, the resulting lightmap output would be less than 1 texel per unit.

The MountainPeak objects are far enough away from other Scene geometry that they are unlikely to receive any detailed or high frequency lighting. This means we there will be little visual loss should we opt for a lower Resolution. In our tutorial Scene, we have found a Resolution value of 0.05 is enough to capture the very diffuse bounce lighting received by these objects. Enter this value into the newly created TutorialTerrainLow Lightmap Parameters.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, set the Resolution value to 0.05.

Next, we will look at the Cluster Resolution value. As described earlier, Cluster Resolution is a multiplier used against the texel size of any lightmaps generated for that object. At a value of 1, a single Cluster will be the same size as a lightmap texel. Lower values will be fraction of this. Remember that Clusters are essentially a voxelized approximation of the Static Scene used for Unity’s Precomputed Realtime GI. We only need to consider higher Cluster resolutions when the size of these voxels is insufficient to capture the variance in the color of light bounced to or from an object.

Similar to the resolution of our lightmaps, Cluster Resolution can be lowered substantially for the MountainPeak GameObjects. Using Clusters at the default resolution required throughout the rest of our Scene would mean many hundreds were needed to cover an object of this size.

Considering that MountainPeak has a material with a fairly consistent albedo, and the object is relatively far from the Camera, we can make important savings by selectively reducing this object’s resolution. While accuracy of the lighting solution may not be the same as using higher resolutions, we are unlikely to notice any visual difference in the context that the object is used within our Scene.

description

  • Cluster Resolution can be considerably lower for very large objects, far from the Camera.

  • In the top left of the Scene view, use the Draw Mode drop-down menu to select Clustering.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, reduce the Cluster Resolution value. Observe how the size of the colored patches increases as the value is lowered.

Alternatively, the Lit Clustering draw mode can be a useful way to assess whether the resulting resolution of the Cluster approximation is sufficient to capture details present in the Scene lighting.

  • In the top left of the Scene view, use the Draw Mode drop-down menu to select Lit Clustering.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, reduce the Cluster Resolution value. Observe how the view changes as the value is altered.

When adjusting this, it is always good to ask yourself whether any critical lighting detail is missed by using lower Cluster Resolutions. If there is no visual benefit to having a higher resolution, the preference should always be to use fewer Clusters. Remember that the number of Clusters within your Scene will have a big impact on both the length of the precompute and the interactivity of GI at run time. Here, we have found a Cluster Resolution of 0.4 works given the context of the MountainPeak instances.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, set the Cluster Resolution value to 0.4.

description

Lit Clustering Scene draw mode is useful for evaluating whether you have sufficient Cluster resolution to capture the lighting present within the Scene.

In many cases, just lowering the resolution of your lightmaps and Cluster size will be enough to achieve big gains in lighting performance. However, we also can make additional finer-grained improvements by modifying the values used in Unity’s radiosity calculations: Irradiance Budget and Irradiance Quality.

First we will look at Irradiance Budget. As discussed earlier, this value controls how much memory is allocated to each lightmap texel when its value is calculated. In the interests of run time performance, we should use the lowest Irradiance Budget value we can without negatively impacting the appearance of our lighting.

We may wish to increase our Irradiance Budget if our Precomputed Realtime GI appears soft or otherwise indistinct. This can be particularly noticeable in areas where high contrast lighting in the Scene is not being accurately represented

description

The Irradiance Scene draw mode is useful when assessing changes to the Irradiance Budget or Quality values.

In the case of the two MountainPeak GameObjects, the lighting here is generally low frequency. We don’t need to capture any dappled or high contrast lighting, which means that we can reduce the Irradiance Budget from its default value of 128 bytes without noticeable negative effects upon our lighting.

  • In the top left of the Scene view, use the Draw Mode drop-down menu to select Irradiance.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, reduce the value of Irradiance Budget.

  • Notice how, as we reduce this value, the lighting on the MountainPeak GameObject becomes slightly softer.

Following some experimentation, we have found that halving the Irradiance Budget to a value of 64 bytes does not affect the lighting quality too noticeably.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, set the value of Irradiance Budget to 64.

Now we will move on to the Irradiance Quality. As discussed earlier, Irradiance Quality determines the number of rays that each Cluster fires when calculating the value of a lightmap texel. Unlike Irradiance Budget, which will impact run time performance, Irradiance Budget only affects our lighting precompute time.

It may be useful to increase the Irradiance Quality in situations where small but important Clusters are missed due to an insufficient number of rays being fired. For example, in situations where we may have a very prominent color on a piece of geometry which does not feature in the resulting lightmaps.

With our MountainPeak GameObjects, the huge scale of the objects within the Scene means that we are unlikely to miss nearby Clusters. This means that we can improve precompute performance by lowering Irradiance Quality without negatively affecting the lighting results.

  • In the top left of the Scene view, use the Draw Mode drop-down menu to select Irradiance.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, reduce the value of Irradiance Quality.

  • Notice how the resulting lightmaps become slightly less sharp as the value goes down.

Having tested a number of results, we have found that an Irradiance Quality of 2048 rays gives a good compromise between the quality of our GI lighting and the cost this places on our precompute times. Despite some loss in accuracy, the overall lighting effect is sufficient for our needs with this distant object.

  • Select the TutorialTerrainLow Lightmap Parameters asset in the Project window.

  • In the Inspector panel, enter an Irradiance Quality value of 2048.

Assigning Lightmap Parameters assets throughout the Scene

With a Lightmap Parameters asset configured for the distant scenery, we can now apply what we have learned and create Lighting Parameters assets for the remaining Static geometry within the LightingTutorialStart Scene.

We discussed earlier in the tutorial how it is often a good idea to decide on a taxonomy, or ‘scheme’ for organizing objects within our Scenes. Breaking the Scene up into object groupings based on characteristics such as size or proximity to the Camera will help you make easier selections when applying Lightmap Parameters assets to fine tune lighting performance.

While working through the remaining Static objects under the Environment GameObject, look for distinct categorisations of objects in order to assign a shared Lightmap Parameters asset. For example, is the object likely to be close to the playable area and seen up-close? In this case, increasing the Resolution value for this object may yield a tangible improvement in the lighting result. Is the object distant or perhaps partially obscured? Here you would be unlikely to need the same Resolution value as the visual benefits might not be noticed. Similarly, if an object’s material does not feature a great deal of variance in albedo, higher lighting resolutions may not deliver much benefit.

It is not necessary to be too fine-grained when assigning Lightmap Parameters assets. For most Scenes, a handful of distinct of distinct variants is enough. Lots of subtle variants are difficult to work with, as any adjustments will need to be applied numerous times throughout the different Lightmap Parameters assets.

In our completed tutorial Scene LightingTutorialOptimal we have divided the Scene up into the following categories based on the complexity of the object and the required resolution:

  • RocksLow: Smooth, convex rock type meshes that are distant from the Camera. Their distance means these objects only require a low Resolution and reduced Cluster Resolution.

  • RocksMedium: Smooth, convex rock type meshes that are closer to the playable area and the Camera and therefore more visible. For this reason we use a slightly higher Resolution and Cluster Resolution, along with higher Irradiance Budget and IrradianceQuality.

  • StructuresHigh: Important buildings that benefit from higher Resolution and Cluster Resolution. This therefore requires greater Irradiance Quality and Irradiance budget values.

  • StructuresLow: Buildings which are far from the camera, needing only lower Resolution values.

  • TerrainLow: Large, distant meshes such as mountains which do not benefit from higher resolution lighting.

  • TerrainPlayable: Large terrain objects which will be close to the camera and require a lightmap resolution balanced for closer inspection by the Camera. The scale of the object means lower Cluster Resolutions are still feasible however.

  • TerrainVeryLow: Very distant and partly obscured terrain objects needing only low Resolution and Cluster Resolution values. These also have low Irradiance Quality and Irradiance Budget settings.

In addition to these custom Lightmap Parameters assets, in the completed tutorial Scene LightingTutorialOptimal we also have a number of structures using the Default Parameters set from the Scene tab of the Lighting window. Here we are using Unity’s standard Lightmap Parameters Default-Medium.

Using the Default Parameters for the majority of Static objects within the Scene reduces the amount of manual assignment that needs to be performed. It often is useful to set the Default Parameter to be the settings that the majority of objects will use. For our purposes, Default-Medium used in combination with a Realtime Resolution of 1 texel per unit gives us optimal results for the majority of objects within the Scene.

description

The Irradiance Scene draw mode is a useful tool when evaluating Scene lighting as it shows your lighting results without the distraction of materials or non-Static objects which do not contribute to your Precomputed Realtime GI.

Use the LightingTutorialOptimal Scene as a guide when making decisions about assigning and configuring your lighting. It should not take long to assign Lightmap Parameters to the remaining Static objects within the Scene. Remember while you are working through these remaining objects, to always question whether there is an objective benefit to keeping settings high. If it possible to lower settings without negatively affecting the visual output, this will always be preferable.

Graphics

  1. Introduction to Lighting and Rendering
  2. Choosing a Lighting Technique
  3. The Precompute Process
  4. Choosing a Rendering Path
  5. Choosing a Color Space
  6. High Dynamic Range (HDR)
  7. Reflections
  8. Ambient Lighting
  9. Light Types
  10. Emissive Materials
  11. Light Probes
  1. Introduction to Precomputed Realtime GI
  2. Realtime Resolution
  3. Understanding Charts
  4. Starting the precompute process
  5. Probe lighting
  6. Unwrapping and Chart reduction
  7. Optimizing Unity's auto unwrapping
  8. Understanding Clusters
  9. Fine tuning with Lightmap Parameters
  10. Summary - Precomputed Realtime GI
  1. Lighting Overview
  2. Lights
  3. Materials
  4. The Standard Shader
  5. Textures
  6. Using Skyboxes
  7. A Gentle Introduction to Shaders
  8. Using detail textures for extra realism close-up
  9. Frame Debugger
  1. Cameras
  2. Image Effects: Overview
  1. Meshes
  2. Mesh Renderers and Mesh Filters
  1. Where to Start?
  2. Preparing Unity Render Settings
  3. Lighting Strategy
  4. Modeling
  5. Standard Shader/Material PBS and texturing
  6. Lighting and Setup
  7. Understanding Post Process Features
  8. Dynamically Lit Objects
  9. Sample Project File
  1. Using Cameras
  2. Using Lights
  3. Fun with Lasers!
  4. The Particle System
  5. Cinematic Explosions - PIT
  6. Cinematic Composition - PIT
  7. Image Effects: Overview
  8. Fun with Explosions!
  9. Exploring the Blacksmith Environment
  1. Turning it up to 11: Making Unity 5 look Awesome!
  1. Substance - Introduction
  2. Substance - Understanding PBR
  3. Substance - Working with PBR in Unity
  4. Substance - Using Substance materials in Unity
  5. Substance - Optimization for Substance materials
  6. Substance - Creating rock shapes
  7. Substance - Creating rock material, Pt 1
  8. Substance - Creating rock material, Pt 2
  9. Substance - Creating the dirt ground material
  10. Substance - Creating the rock ground material, Pt 1
  11. Substance - Creating the rock ground material, Pt 2
  12. Substance - Publishing the Substance
  13. Substance - Creating a blocking scene
  14. Substance - Creating the ground model
  15. Substance - Modelling the rock assets
  16. Substance - Texturing the upper body
  17. Substance - Exporting textures from Substance Painter
  18. Substance - Creating a scene in Unity, Pt 1
  19. Substance - Creating a scene in Unity, Pt 2
  1. Introduction and Goals
  2. Flame Particles Overview
  3. Particle Emission and Color
  4. Adding Movement To Particles With Noise
  5. Creating The Ember Particles
  6. Adding Lighting To Particles
  7. Creating Sparks With Particle Trails
  8. Particle Question and Answers
  1. Introduction and Goals
  2. Adding a Second Camera
  3. Adding Minimap Icons
  4. Render Textures and UI
  5. Adding A UI Mask and Border Image
  6. Questions and Answers
  1. Session Introduction
  2. Rendering In Unity
  3. Anatomy Of An Unlit Shader
  4. The Vertex Function
  5. The Fragment Function and Color Tint
  6. Making A Transparent Shader
  7. Displacing Vertices and Clipping Pixels
  8. Questions and Answers
  1. Introduction and Session Goals
  2. The VideoPlayer Component
  3. Texturing Objects With Video
  4. Playing and Pausing
  5. Playing A New Clip
  6. Displaying Current Time and Clip
  7. Animated Playhead
  8. Questions and Answers
  1. Overview and Goals
  2. Tonemapping and Color Grading
  3. Camera Movement & Animation
  4. Post Processing Volumes
  5. Timeline & Cinemachine
  6. Questions and Answers