|
|
@ -13,7 +13,7 @@ TEXTURE2D_X(InputOpaqueColor) : register(t0); |
|
|
TEXTURE2D_X(InputColor) : register(t1); |
|
|
TEXTURE2D_X(InputColor) : register(t1); |
|
|
TYPED_TEXTURE2D_X(float, InputDepth) : register(t2); |
|
|
TYPED_TEXTURE2D_X(float, InputDepth) : register(t2); |
|
|
TYPED_TEXTURE2D_X(float2, InputVelocity) : register(t3); |
|
|
TYPED_TEXTURE2D_X(float2, InputVelocity) : register(t3); |
|
|
RW_TEXTURE2D_X(float4, MotionDepthAlphaBuffer) : register(u0); |
|
|
|
|
|
|
|
|
RW_TEXTURE2D_X(half4, MotionDepthAlphaBuffer) : register(u0); |
|
|
RW_TEXTURE2D_X(uint, YCoCgColor) : register(u1); |
|
|
RW_TEXTURE2D_X(uint, YCoCgColor) : register(u1); |
|
|
|
|
|
|
|
|
CBUFFER_START(Params) |
|
|
CBUFFER_START(Params) |
|
|
@ -91,7 +91,7 @@ void CS(uint3 gl_GlobalInvocationID : SV_DispatchThreadID) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
////////////compute luma |
|
|
////////////compute luma |
|
|
float3 Colorrgb = LOAD_TEXTURE2D_X(InputColor, InputPos).xyz; |
|
|
|
|
|
|
|
|
half3 Colorrgb = LOAD_TEXTURE2D_X(InputColor, InputPos).xyz; |
|
|
|
|
|
|
|
|
///simple tonemap |
|
|
///simple tonemap |
|
|
Colorrgb /= max(max(Colorrgb.x, Colorrgb.y), Colorrgb.z) + h0; |
|
|
Colorrgb /= max(max(Colorrgb.x, Colorrgb.y), Colorrgb.z) + h0; |
|
|
@ -106,14 +106,14 @@ void CS(uint3 gl_GlobalInvocationID : SV_DispatchThreadID) |
|
|
uint y11 = uint(Colorycocg.y * 2047.5); |
|
|
uint y11 = uint(Colorycocg.y * 2047.5); |
|
|
uint z10 = uint(Colorycocg.z * 1023.5); |
|
|
uint z10 = uint(Colorycocg.z * 1023.5); |
|
|
|
|
|
|
|
|
float3 Colorprergb = LOAD_TEXTURE2D_X(InputOpaqueColor, InputPos).xyz; |
|
|
|
|
|
|
|
|
half3 Colorprergb = LOAD_TEXTURE2D_X(InputOpaqueColor, InputPos).xyz; |
|
|
|
|
|
|
|
|
///simple tonemap |
|
|
///simple tonemap |
|
|
Colorprergb /= max(max(Colorprergb.x, Colorprergb.y), Colorprergb.z) + h0; |
|
|
Colorprergb /= max(max(Colorprergb.x, Colorprergb.y), Colorprergb.z) + h0; |
|
|
float3 delta = abs(Colorrgb - Colorprergb); |
|
|
|
|
|
float alpha_mask = max(delta.x, max(delta.y, delta.z)); |
|
|
|
|
|
|
|
|
half3 delta = abs(Colorrgb - Colorprergb); |
|
|
|
|
|
half alpha_mask = max(delta.x, max(delta.y, delta.z)); |
|
|
alpha_mask = (0.35f * 1000.0f) * alpha_mask; |
|
|
alpha_mask = (0.35f * 1000.0f) * alpha_mask; |
|
|
|
|
|
|
|
|
YCoCgColor[COORD_TEXTURE2D_X(InputPos)] = ((x11 << 21u) | (y11 << 10u)) | z10; |
|
|
YCoCgColor[COORD_TEXTURE2D_X(InputPos)] = ((x11 << 21u) | (y11 << 10u)) | z10; |
|
|
MotionDepthAlphaBuffer[COORD_TEXTURE2D_X(InputPos)] = float4(motion, NearestZ, alpha_mask); |
|
|
|
|
|
|
|
|
MotionDepthAlphaBuffer[COORD_TEXTURE2D_X(InputPos)] = half4(motion, NearestZ, alpha_mask); |
|
|
} |
|
|
} |