You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
1.9 KiB

#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 kernel KMain
#pragma kernel KAddMain
#pragma kernel KAccumMain
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch switch2
// Input
TEXTURE2D_X(_InputTexture);
TEXTURE2D_X(_InputTexture2);
// Output
RW_TEXTURE2D_X(float4, _OutputTexture);
[numthreads(8, 8, 1)]
void KMain(uint3 dispatchThreadId : SV_DispatchThreadID)
{
UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z);
uint2 currentPixelCoord = dispatchThreadId.xy;
float4 exposureMultiplier = 1.0;
exposureMultiplier.xyz = GetCurrentExposureMultiplier();
_OutputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] = _InputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] * exposureMultiplier;
}
[numthreads(8, 8, 1)]
void KAddMain(uint3 dispatchThreadId : SV_DispatchThreadID)
{
UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z);
uint2 currentPixelCoord = dispatchThreadId.xy;
float4 exposureMultiplier = 1.0;
exposureMultiplier.xyz = GetCurrentExposureMultiplier();
float4 accum = _InputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] + _InputTexture2[COORD_TEXTURE2D_X(currentPixelCoord)];
_OutputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] = accum * exposureMultiplier;
}
[numthreads(8, 8, 1)]
void KAccumMain(uint3 dispatchThreadId : SV_DispatchThreadID)
{
UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z);
uint2 currentPixelCoord = dispatchThreadId.xy;
float4 exposureMultiplier = 1.0;
exposureMultiplier.xyz = GetCurrentExposureMultiplier();
float4 accum = _OutputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] + _InputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] * exposureMultiplier;
_OutputTexture[COORD_TEXTURE2D_X(currentPixelCoord)] = accum;
}