#pragma kernel RTAOApplyIntensity #pragma only_renderers d3d11 // HDRP generic includes #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" #pragma only_renderers d3d11 // #pragma enable_d3d11_debug_symbols // Tile size of this compute #define RAYTRACING_AMBIENT_OCCLUSION_TILE_SIZE 8 float _RaytracingAOIntensity; RW_TEXTURE2D_X(float, _AmbientOcclusionTextureRW); [numthreads(RAYTRACING_AMBIENT_OCCLUSION_TILE_SIZE, RAYTRACING_AMBIENT_OCCLUSION_TILE_SIZE, 1)] void RTAOApplyIntensity(uint3 dispatchThreadId : SV_DispatchThreadID, uint2 groupThreadId : SV_GroupThreadID, uint2 groupId : SV_GroupID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); // Compute the pixel position to process uint2 currentCoord = groupId * RAYTRACING_AMBIENT_OCCLUSION_TILE_SIZE + groupThreadId; // Grab the AO value without the intensity float value = _AmbientOcclusionTextureRW[COORD_TEXTURE2D_X(currentCoord)]; _AmbientOcclusionTextureRW[COORD_TEXTURE2D_X(currentCoord)] = 1.0 - PositivePow(value, _RaytracingAOIntensity); }