mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
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:
parent
f110158654
commit
4d3d800051
2 changed files with 13 additions and 7 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue