SetShaderPass(string)
Selects which Shader Pass to use when executing ray/geometry intersection shaders.
Read time 1 minuteLast updated 4 days ago
Definition
- Type: Method
- Namespace: UnityEngine.Rendering
- Assembly: UnityEngine.CoreModule
public void SetShaderPass(string passName)
Parameters
The Shader Pass to use when executing ray tracing shaders.
Remarks
This name is specified in the ShaderLab shaders used by Materials applied to Renderers used in ray tracing. If a shader doesn't have a Shader Pass with the specified name, then no ray/geometry intersection code is executed. This method must be called before calling DispatchRays.
The Shader Pass code can include optional closest hit or any hit shaders.
For procedural ray-traced geometries, an intersection shader must be authored. The engine code will automatically enable a keywork named if the geometry is proceduraly ray-traced.
RAY_TRACING_PROCEDURAL_GEOMETRYThe following example shader code returns the color red.
Examples
SubShader{ Pass { // RayTracingShader.SetShaderPass must use this name in order to execute the ray tracing shaders from this Pass. Name "Test" // Add tags to identify the shaders to use for ray tracing. Tags{ "LightMode" = "RayTracing" } HLSLPROGRAM #pragma multi_compile_local RAY_TRACING_PROCEDURAL_GEOMETRY // Specify this shader is a raytracing shader. #pragma raytracing test struct AttributeData { float2 barycentrics; }; struct RayPayload { float4 color; };#if RAY_TRACING_PROCEDURAL_GEOMETRY [shader("intersection")] void IntersectionMain() { AttributeData attr; attr.barycentrics = float2(0, 0); ReportHit(0, 0, attr); }#endif [shader("closesthit")] void ClosestHitMain(inout RayPayload payload : SV_RayPayload, AttributeData attribs : SV_IntersectionAttributes) { payload.color = float4(1, 0, 0, 1); } ENDHLSL }}