31 lines
1.2 KiB
Plaintext
31 lines
1.2 KiB
Plaintext
#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);
|
|
}
|