Removing limit for point lights
This commit is contained in:
@@ -13,9 +13,29 @@ struct ComputeShaderInput
|
||||
[shader("compute")]
|
||||
void computeFrustums(ComputeShaderInput in)
|
||||
{
|
||||
const float3 topLeft = float3(-1, -1, -1);
|
||||
const float3 topRight = float3(1, -1, -1);
|
||||
const float3 bottomLeft = float3(-1, 1, -1);
|
||||
const float3 origin = float3(0, 0, 0);
|
||||
float3 xStep = (topRight - topLeft) / pDispatchParams.numThreads.x;
|
||||
float3 yStep = (bottomLeft - topLeft) / pDispatchParams.numThreads.y;
|
||||
float3 corners[4] = {
|
||||
topLeft + (in.dispatchThreadID.x + 0) * xStep + (in.dispatchThreadID.y + 0) * yStep,
|
||||
topLeft + (in.dispatchThreadID.x + 1) * xStep + (in.dispatchThreadID.y + 0) * yStep,
|
||||
topLeft + (in.dispatchThreadID.x + 0) * xStep + (in.dispatchThreadID.y + 1) * yStep,
|
||||
topLeft + (in.dispatchThreadID.x + 1) * xStep + (in.dispatchThreadID.y + 1) * yStep
|
||||
};
|
||||
Frustum frustum;
|
||||
frustum.basePlane.n = float3(0, 0, -1);
|
||||
frustum.basePlane.d = 0;
|
||||
|
||||
frustum.sides[0] = computePlane(origin, corners[0], corners[2]);
|
||||
frustum.sides[1] = computePlane(origin, corners[3], corners[1]);
|
||||
frustum.sides[2] = computePlane(origin, corners[1], corners[0]);
|
||||
frustum.sides[3] = computePlane(origin, corners[2], corners[3]);
|
||||
if(in.dispatchThreadID.x < pDispatchParams.numThreads.x && in.dispatchThreadID.y < pDispatchParams.numThreads.y)
|
||||
{
|
||||
uint index = in.dispatchThreadID.x + (in.dispatchThreadID.y * pDispatchParams.numThreads.x);
|
||||
//pDispatchParams.frustums[index] = frustum;
|
||||
pDispatchParams.frustums[index] = frustum;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ void cullLights(ComputeShaderInput in)
|
||||
{
|
||||
PointLight light = pLightEnv.pointLights[i];
|
||||
//TODO: why doesn't this check go through?
|
||||
//if(light.insideFrustum(groupFrustum, nearClipVS, maxDepthVS))
|
||||
if(light.insideFrustum(groupFrustum, nearClipVS, maxDepthVS))
|
||||
{
|
||||
tAppendLight(i);
|
||||
if(!light.insidePlane(minPlane))
|
||||
@@ -131,6 +131,4 @@ void cullLights(ComputeShaderInput in)
|
||||
{
|
||||
pCullingParams.tLightIndexList[tLightIndexStartOffset + k] = tLightList[k];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user