skylights do actually have a position. 0,0,0. so we can include those without messing with things. and we'll want to sum/count for blending purposes down the line. not render over each other

This commit is contained in:
Azaezel 2019-01-08 11:16:05 -06:00
parent f110158654
commit 4d3d800051
2 changed files with 13 additions and 7 deletions

View file

@ -347,7 +347,7 @@ void RenderProbeMgr::render( SceneRenderState *state )
MatrixF probeTrans = curEntry->getTransform(); MatrixF probeTrans = curEntry->getTransform();
if (!curEntry->mIsSkylight) //if (!curEntry->mIsSkylight)
{ {
//if (curEntry->mProbeShapeType == ProbeRenderInst::Sphere) //if (curEntry->mProbeShapeType == ProbeRenderInst::Sphere)
// probeTrans.scale(curEntry->mRadius * 1.01f); // probeTrans.scale(curEntry->mRadius * 1.01f);
@ -362,13 +362,13 @@ void RenderProbeMgr::render( SceneRenderState *state )
if (effectiveProbeCount != 0) if (effectiveProbeCount != 0)
{ {
Con::printf("Probe aligned position count: %i", probeCount); //Con::printf("Probe aligned position count: %i", probeCount);
for (U32 p = 0; p < probeCount; p++) for (U32 p = 0; p < probeCount; p++)
{ {
Point3F prb = probePositions[p]; Point3F prb = probePositions[p];
Con::printf("Probe %i aligned position is: %g %g %g", p, prb.x, prb.y, prb.z); //Con::printf("Probe %i aligned position is: %g %g %g", p, prb.x, prb.y, prb.z);
bool tasadfh = true; bool tasadfh = true;
} }

View file

@ -137,17 +137,23 @@ float4 main( ConvexConnectP IN ) : SV_TARGET
float3 specular = iblBoxSpecular(surface.N, surface.P, surface.roughness, surfToEye, TORQUE_SAMPLER2D_MAKEARG(BRDFTexture), TORQUE_SAMPLERCUBE_MAKEARG(cubeMap), probeWSPos, bbMin, bbMax); float3 specular = iblBoxSpecular(surface.N, surface.P, surface.roughness, surfToEye, TORQUE_SAMPLER2D_MAKEARG(BRDFTexture), TORQUE_SAMPLERCUBE_MAKEARG(cubeMap), probeWSPos, bbMin, bbMax);
int i; int i;
irradiance = float3(0,0,0);
float blendSum = 0.00001;
for(i=0; i < numProbes; i++) for(i=0; i < numProbes; i++)
{ {
float3 probeWS = inProbePosArray[i]; float3 probeWS = inProbePosArray[i];
float3 L = probeWS - surface.P; float3 L = probeWS - surface.P;
blendVal = 1.0-length(L)/radius; blendVal = 1.0-length(L)/radius;
//clip(blendVal); blendVal = max(0,blendVal);
irradiance = float3(blendVal,blendVal,blendVal); irradiance += float3(blendVal,blendVal,blendVal);
specular = irradiance; specular = irradiance;
blendSum += blendVal;
} }
//irradiance /= blendSum;
//specular /= blendSum;
blendSum /= numProbes;
//render into the bound space defined above //render into the bound space defined above
// //
@ -161,5 +167,5 @@ float4 main( ConvexConnectP IN ) : SV_TARGET
//final diffuse color //final diffuse color
float3 diffuse = kD * irradiance * surface.baseColor.rgb; float3 diffuse = kD * irradiance * surface.baseColor.rgb;
return float4(diffuse + specular * surface.ao, blendVal); return float4(diffuse + specular * surface.ao, blendSum);
} }