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

CommandBuffer.SetRayTracingShaderPass

Объявление

public void SetRayTracingShaderPass(Experimental.Rendering.RayTracingShader rayTracingShader, string passName);

Параметры

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

Описание

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

Это имя указывается в шейдерах ShaderLab, используемых материалами, применяемыми к средствам визуализации, используемым в трассировке лучей. Если у шейдера нет Shader Pass с указанным именем, код пересечения луча/геометрии не выполняется. Этот метод необходимо вызывать до вызова CommandBuffer.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