mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 16:25:42 +00:00
Merge pull request #1341 from Azaezel/alpha41/probeOffsetFix
fix probe capturepoint nudge utility
This commit is contained in:
commit
783f2a03b4
5 changed files with 7 additions and 8 deletions
|
|
@ -349,7 +349,7 @@ void RenderProbeMgr::getBestProbes(const Point3F& objPosition, ProbeDataSet* pro
|
||||||
probeDataSet->refScaleArray[i].w = curEntry.mProbeInfo->mCanDamp? 1.0 : 0.0;
|
probeDataSet->refScaleArray[i].w = curEntry.mProbeInfo->mCanDamp? 1.0 : 0.0;
|
||||||
|
|
||||||
Point3F probePos = curEntry.mProbeInfo->mObject->getPosition();
|
Point3F probePos = curEntry.mProbeInfo->mObject->getPosition();
|
||||||
Point3F refPos = probePos + curEntry.mProbeInfo->mProbeRefOffset * probeDataSet->refScaleArray[i].asPoint3F();
|
Point3F refPos = curEntry.mProbeInfo->mProbeRefOffset;
|
||||||
|
|
||||||
probeDataSet->probePositionArray[i] = Point4F(probePos.x, probePos.y, probePos.z, 0);
|
probeDataSet->probePositionArray[i] = Point4F(probePos.x, probePos.y, probePos.z, 0);
|
||||||
probeDataSet->probeRefPositionArray[i] = Point4F(refPos.x, refPos.y, refPos.z, 0);
|
probeDataSet->probeRefPositionArray[i] = Point4F(refPos.x, refPos.y, refPos.z, 0);
|
||||||
|
|
@ -622,7 +622,6 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)
|
||||||
|
|
||||||
IBLUtilities::GenerateIrradianceMap(renderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
IBLUtilities::GenerateIrradianceMap(renderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
||||||
//IBLUtilities::GeneratePrefilterMap(renderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
//IBLUtilities::GeneratePrefilterMap(renderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
||||||
clientProbe->mIrridianceMap->mCubemap->generateMipMaps();
|
|
||||||
|
|
||||||
U32 endMSTime = Platform::getRealMilliseconds();
|
U32 endMSTime = Platform::getRealMilliseconds();
|
||||||
F32 diffTime = F32(endMSTime - startMSTime);
|
F32 diffTime = F32(endMSTime - startMSTime);
|
||||||
|
|
|
||||||
|
|
@ -528,7 +528,7 @@ vec4 computeForwardProbes(Surface surface,
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
int cubemapIdx = int(inProbeConfigData[i].a);
|
int cubemapIdx = int(inProbeConfigData[i].a);
|
||||||
vec3 dir = boxProject(surface.P, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inRefPosArray[i].xyz);
|
vec3 dir = boxProject(surface.P-inRefPosArray[i].xyz, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inProbePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
||||||
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
||||||
|
|
@ -679,7 +679,7 @@ vec4 debugVizForwardProbes(Surface surface,
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
float cubemapIdx = inProbeConfigData[i].a;
|
float cubemapIdx = inProbeConfigData[i].a;
|
||||||
vec3 dir = boxProject(surface.P, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inRefPosArray[i].xyz);
|
vec3 dir = boxProject(surface.P-inRefPosArray[i].xyz, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inProbePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
||||||
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
||||||
|
|
|
||||||
|
|
@ -533,7 +533,7 @@ float4 computeForwardProbes(Surface surface,
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
int cubemapIdx = inProbeConfigData[i].a;
|
int cubemapIdx = inProbeConfigData[i].a;
|
||||||
float3 dir = boxProject(surface.P, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inRefPosArray[i].xyz);
|
float3 dir = boxProject(surface.P-inRefPosArray[i].xyz, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inProbePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
||||||
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
||||||
|
|
@ -685,7 +685,7 @@ float4 debugVizForwardProbes(Surface surface,
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
int cubemapIdx = inProbeConfigData[i].a;
|
int cubemapIdx = inProbeConfigData[i].a;
|
||||||
float3 dir = boxProject(surface.P, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inRefPosArray[i].xyz);
|
float3 dir = boxProject(surface.P-inRefPosArray[i].xyz, surface.R, inWorldToObjArray[i], inRefScaleArray[i].xyz, inProbePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
||||||
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ void main()
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
int cubemapIdx = int(probeConfigData[i].a);
|
int cubemapIdx = int(probeConfigData[i].a);
|
||||||
vec3 dir = boxProject(surface.P, surface.R, worldToObjArray[i], refScaleArray[i].xyz, refPosArray[i].xyz);
|
vec3 dir = boxProject(surface.P-refPosArray[i].xyz, surface.R, worldToObjArray[i], refScaleArray[i].xyz, probePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib;
|
||||||
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib;
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ float4 main(PFXVertToPix IN) : SV_TARGET
|
||||||
if (contrib > 0.0f)
|
if (contrib > 0.0f)
|
||||||
{
|
{
|
||||||
int cubemapIdx = probeConfigData[i].a;
|
int cubemapIdx = probeConfigData[i].a;
|
||||||
float3 dir = boxProject(surface.P, surface.R, worldToObjArray[i], refScaleArray[i].xyz, refPosArray[i].xyz);
|
float3 dir = boxProject(surface.P-refPosArray[i].xyz, surface.R, worldToObjArray[i], refScaleArray[i].xyz, probePosArray[i].xyz);
|
||||||
|
|
||||||
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, dir, cubemapIdx, 0).xyz * contrib;
|
||||||
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, dir, cubemapIdx, lod).xyz * contrib;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue