|
|
|
|
|
|
Texture2D _CameraGBufferTexture0; |
|
|
|
Texture2D _CameraGBufferTexture1; |
|
|
|
Texture2D _CameraGBufferTexture2; |
|
|
|
Texture2D _CameraGBufferTexture3; |
|
|
|
|
|
|
|
|
|
|
|
struct v2f { |
|
|
|
|
|
|
float3 diffuseColor; |
|
|
|
float3 normalWorld; |
|
|
|
float smoothness; |
|
|
|
float3 emission; |
|
|
|
}; |
|
|
|
|
|
|
|
struct LocalDataBRDF |
|
|
|
|
|
|
|
|
|
|
static LocalDataBRDF g_localParams; |
|
|
|
|
|
|
|
StandardData UnityStandardDataFromGbuffer(float4 gbuffer0, float4 gbuffer1, float4 gbuffer2) |
|
|
|
StandardData UnityStandardDataFromGbuffer(float4 gbuffer0, float4 gbuffer1, float4 gbuffer2, float4 gbuffer3) |
|
|
|
{ |
|
|
|
StandardData data; |
|
|
|
|
|
|
|
|
|
|
float ao = gbuffer0.a; |
|
|
|
data.emission = gbuffer3.xyz; |
|
|
|
|
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
float4 gbuffer0 = _CameraGBufferTexture0.Load( uint3(pixCoord.xy, 0) ); |
|
|
|
float4 gbuffer1 = _CameraGBufferTexture1.Load( uint3(pixCoord.xy, 0) ); |
|
|
|
float4 gbuffer2 = _CameraGBufferTexture2.Load( uint3(pixCoord.xy, 0) ); |
|
|
|
float4 gbuffer3 = _CameraGBufferTexture3.Load( uint3(pixCoord.xy, 0) ); |
|
|
|
StandardData data = UnityStandardDataFromGbuffer(gbuffer0, gbuffer1, gbuffer2); |
|
|
|
StandardData data = UnityStandardDataFromGbuffer(gbuffer0, gbuffer1, gbuffer2, gbuffer3); |
|
|
|
|
|
|
|
g_localParams.gbuf = data; |
|
|
|
g_localParams.oneMinusReflectivity = 1.0 - SpecularStrength(data.specularColor.rgb); |
|
|
|
|
|
|
float3 c = ExecuteLightListTiled(numLightsProcessed, pixCoord, vP, vPw, Vworld); |
|
|
|
float3 c = /*data.emission +*/ ExecuteLightListTiled(numLightsProcessed, pixCoord, vP, vPw, Vworld); |
|
|
|
|
|
|
|
//c = OverlayHeatMap(numLightsProcessed, c); |
|
|
|
return float4(c,1.0); |
|
|
|