Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Finds all the properties needed by the main shading function by sampling the GBuffer
- inline FragmentData FragmentDataFromGBuffer(float2 screenUV, float3 interpolatedCornersWS)
- {
- float4 gBuffTex1 = tex2D(JoveMainTexture, screenUV);
- float4 gBuffTex2 = tex2D(JoveMaskTexture, screenUV);
- #ifdef JOVE_AMBIENT_LIGHTMAP
- float4 gBuffTex3 = tex2D(JoveNormalTexture, screenUV);
- #else
- float2 gBuffTex3 = tex2D(JoveNormalTexture, screenUV).xy;
- #endif
- float gBuffTex4 = tex2D(JoveDepthTexture, screenUV).x;
- float depthOverFarPlane = gBuffTex4.x;
- float depth = depthOverFarPlane * FarPlane;
- MaterialData materialData;
- materialData.specularColor = DecodeSpecular(gBuffTex2.x, gBuffTex1.xyz, gBuffTex1.w);
- materialData.diffuseColor = DecodeDiffuse(gBuffTex1.xyz, materialData.specularColor, gBuffTex2.x);
- materialData.metallic = gBuffTex2.x;
- materialData.translucency = gBuffTex2.z;
- materialData.roughness = CalculateRoughness(gBuffTex2.w);
- GeometryData geometryData;
- geometryData.worldPosition = CalculateWorldPosition(depthOverFarPlane, interpolatedCornersWS);
- geometryData.worldNormal = DecodeWorldNormals(gBuffTex3.xy);
- LookupData lookupData;
- lookupData.screenUV = screenUV;
- lookupData.depth = depth;
- LightingData lightingData;
- lightingData.ambientOcclusion = min(gBuffTex2.y, SampleAO(screenUV, depthOverFarPlane));
- ShadingVariables precalculatedVariables = PrecalculateShadingVariables(materialData, geometryData, lookupData, lightingData);
- FragmentData fragmentData;
- fragmentData.materialData = materialData;
- fragmentData.geometryData = geometryData;
- fragmentData.lookupData = lookupData;
- fragmentData.lightingData = lightingData;
- fragmentData.precalculatedVariables = precalculatedVariables;
- return fragmentData;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement