- Modify shader generator to automatically generate define from struct
- Add attribute to be able to control display name and enum start value
- Refactor the whole debugging code for debug view material properties
- Rename a few thing
-fix issue with spotAngle that have been change in the light component
- remove undesired unrachable code warning
- create a proper shader config system (previous one was nor working)
- Change concept of material gbuffer to also include lighting, remove
all lighting buffer macro, bakeDiffuseLighting now pass to encode to
gbuffer
- deferred material is now in charge of all material RT format, lighting
buffer included
- velocity buffer is independt of deferred material
- add first start of distortion
- update velocity buffer management + add velocity pass
-
All material (Lit, Unlit) now derive from a base class:
RenderPipelineMaterial
previously namespace was use to material name, now it is a regular class
It allow to add more easily new material or replace current one
HDRenderPipeline with introspection will execute all material method
from found RenderPipelineMaterial
The unique deferred material that we suppose is still a special case as
several code depends on it
* HDRP: Add support of light layering for forward (first draft)
TODO:
- Test instancing
- Check perf
- add an option to disable light layer support + in frameSettings
- add deferred rendering support (mean add an optional extra GBuffer)
* Add LightLinking support (version 1 - compile)
This PR add support of LightLayers feature.
To use it, setup mask renderingLayers on renderers and LightLayers on a lights. If a logical and of both give a non 0 value, the light is apply, otherwise it isn't.
This mean that by default LightLayers is 1 and RenderingLayers is 1. Then user can say LightLayers is only 2 and it will only affect renderingLayers with 2 or 3 mask value.
LightLayers require an extra GBuffer in deferred, mean it have extra bandwidth and memory cost.
LightLayers once enabled in HDRPAsset with SupportLightLayers can be control by FrameSettings. Mean a camera can enable extra RT only for an in game cinematic.
This PR refactor...
- Shader code change: Rename GetBakedDiffuseLighting to ModifyBakedDiffuseLighting. This function now handle lighting model for transmission too. Lux meter debug mode is factor outisde.
- Shader code change: GetBakedDiffuseLighting is not call anymore in GBuffer or forward pass, including the ConvertSurfaceDataToBSDFData and GetPreLightData, this is done in ModifyBakedDiffuseLighting now
- Shader code change: Added a backBakeDiffuseLighting to BuiltinData to handle lighting for transmission
- Shader code change: Material must now call InitBuiltinData (Init all to zero + init bakeDiffuseLighting and backBakeDiffuseLighting ) and PostInitBuiltinData
- Update shader graph associate code