31 lines
1.2 KiB
Plaintext

#pragma kernel RTAOApplyIntensity
#pragma only_renderers d3d11 ps5
// 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 ps5
// #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);
}