Unity 6.3
0 онлайн 83 гостей 3 в системе
Вход

RayTracingShader.SetShaderPass

Declaration

public void SetShaderPass(string passName);

Параметры

Параметр Описание
passName Shader Pass для использования при выполнении шейдеров с трассированием лучей.

Описание

Выбирает, какой Shader Pass использовать при выполнении шейдеров пересечения луча/геометрии.

Это имя указано в шейдерах ShaderLab, используемых Материалами, применяемыми к рендерам, используемым в трассировании лучей. Если у шейдера нет Shader Pass с указанным именем, то код пересечения лучей/геометрии не выполняется. Этот метод должен быть вызван до вызова RayTracingShader.DispatchRays.

Код Shader Pass может включать опциональные шейдеры ближайшего попадания или любые попадания.

Для процедурных геометрий с трассированием лучей, должен быть создан шейдер пересечения. Код движка автоматически включит ключевую работу с именем RAY_TRACING_PROCEDURAL_GEOMETRY, если геометрия процедурно трассирована лучами.

Следующий пример кода шейдера возвращает красный цвет.

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 } }