rayTracingShader | 要设置参数的RayTracingShader。 |
passName | 执行光线追踪着色器时使用的着色器通道。 |
添加一个命令来选择执行射线/几何体相交着色器时使用的着色器通道。
此名称在光线追踪中使用的渲染器应用的材质使用的 ShaderLab 着色器中指定。如果着色器没有指定名称的着色器通道,则不会执行任何射线/几何体相交代码。必须在调用CommandBuffer.DispatchRays之前调用此方法。
着色器通道代码可以包含可选的最近命中或任何命中着色器。
对于过程化光线追踪几何体,必须编写一个相交着色器。如果几何体是过程化光线追踪的,引擎代码将自动启用名为RAY_TRACING_PROCEDURAL_GEOMETRY
的关键字。
SubShader { Pass { // CommandBuffer.SetRayTracingShaderPass must use this name in order to execute the ray tracing shaders from this Pass. Name "Test"
Tags{ "LightMode" = "RayTracing" }
HLSLPROGRAM
#pragma multi_compile_local RAY_TRACING_PROCEDURAL_GEOMETRY
#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 } }