Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

RayTracingShader.SetShaderPass

Экспериментальный: этот API является экспериментальным и может быть изменен или удален в будущем.

Объявление

public void SetShaderPass(string passName);

Параметры

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

Описание

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

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

Код Shader Pass может включать в себя необязательные шейдеры Nearshit или AnyHit.

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

SubShader { Pass { // SetShaderPass 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 } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3