import Common; import LightEnv; import Material; import MaterialParameter; struct LightCullingData { RWStructuredBuffer oLightIndexList; RWStructuredBuffer tLightIndexList; RWTexture2D oLightGrid; RWTexture2D tLightGrid; }; layout(set=5) ParameterBlock pLightCullingData; [shader("pixel")] float4 fragmentMain(in FragmentParameter params : PARAMETER) : SV_Target { MaterialParameter materialParams = params.getMaterialParameter(); LightingParameter lightingParams = params.getLightingParameter(); let brdf = pMaterial.prepare(materialParams); float3 result = float3(0, 0, 0); for(int i = 0; i < pLightEnv.numDirectionalLights; ++i) { result += pLightEnv.directionalLights[i].illuminate(lightingParams, brdf); } for(int i = 0; i < pLightEnv.numPointLights; ++i) { result += pLightEnv.pointLights[i].illuminate(lightingParams, brdf); } return float4(result, 1.0f); }