Skip to content

Commit e5aa6e4

Browse files
authored
Merge pull request #1258 from Azaezel/alpha41/probePoke
shift capturing from a globalMacro to a sceneRenderstate S32
2 parents 848db69 + fe26ffc commit e5aa6e4

13 files changed

Lines changed: 69 additions & 101 deletions

File tree

Engine/source/materials/processedCustomMaterial.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ bool ProcessedCustomMaterial::setupPass( SceneRenderState *state, const SceneDat
328328

329329
shaderConsts->setSafe(rpd->shaderHandles.mAccumTimeSC, MATMGR->getTotalTime());
330330
shaderConsts->setSafe(rpd->shaderHandles.mDampnessSC, MATMGR->getDampnessClamped());
331+
shaderConsts->setSafe(rpd->shaderHandles.mIsCapturingSC, state ? (S32)state->isCapturing() : 0);
331332

332333
return true;
333334
}

Engine/source/materials/processedShaderMaterial.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ void ShaderConstHandles::init( GFXShader *shader, CustomMaterial* mat /*=NULL*/)
115115
// MFT_HardwareSkinning
116116
mNodeTransforms = shader->getShaderConstHandle( "$nodeTransforms" );
117117

118+
mIsCapturingSC = shader->getShaderConstHandle(ShaderGenVars::isCapturing);
119+
118120
// Clear any existing texture handles.
119121
dMemset( mTexHandlesSC, 0, sizeof( mTexHandlesSC ) );
120122
if(mat)
@@ -1093,6 +1095,8 @@ void ProcessedShaderMaterial::_setShaderConstants(SceneRenderState * state, cons
10931095
shaderConsts->setSafe( handles->mAccumTimeSC, MATMGR->getTotalTime() );
10941096

10951097
shaderConsts->setSafe(handles->mDampnessSC, MATMGR->getDampnessClamped());
1098+
shaderConsts->setSafe(handles->mIsCapturingSC, (S32)state->isCapturing());
1099+
10961100
// If the shader constants have not been lost then
10971101
// they contain the content from a previous render pass.
10981102
//

Engine/source/materials/processedShaderMaterial.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class ShaderConstHandles
104104

105105
GFXShaderConstHandle* mNodeTransforms;
106106

107+
GFXShaderConstHandle* mIsCapturingSC;
107108
struct customHandleData
108109
{
109110
StringTableEntry handleName;

Engine/source/postFx/postEffect.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,8 @@ PostEffect::PostEffect()
498498
mMatCameraToWorldSC( NULL),
499499
mInvCameraTransSC(NULL),
500500
mMatCameraToScreenSC(NULL),
501-
mMatScreenToCameraSC(NULL)
501+
mMatScreenToCameraSC(NULL),
502+
mIsCapturingSC(NULL)
502503
{
503504
dMemset( mTexSRGB, 0, sizeof(bool) * NumTextures);
504505
dMemset( mActiveTextures, 0, sizeof( GFXTextureObject* ) * NumTextures );
@@ -798,8 +799,12 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
798799
mInvCameraTransSC = mShader->getShaderConstHandle("$invCameraTrans");
799800
mMatCameraToScreenSC = mShader->getShaderConstHandle("$cameraToScreen");
800801
mMatScreenToCameraSC = mShader->getShaderConstHandle("$screenToCamera");
802+
mIsCapturingSC = mShader->getShaderConstHandle("$isCapturing");
801803
}
802804

805+
if (mIsCapturingSC->isValid())
806+
mShaderConsts->set(mIsCapturingSC, (S32)state->isCapturing());
807+
803808
// Set up shader constants for source image size
804809
if ( mRTSizeSC->isValid() )
805810
{

Engine/source/postFx/postEffect.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ class PostEffect : public SimGroup
164164
GFXShaderConstHandle *mMatCameraToScreenSC;
165165
GFXShaderConstHandle *mMatScreenToCameraSC;
166166

167+
GFXShaderConstHandle* mIsCapturingSC;
168+
167169
bool mAllowReflectPass;
168170

169171
/// If true update the shader.

Engine/source/renderInstance/renderProbeMgr.cpp

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -503,47 +503,13 @@ void RenderProbeMgr::reloadTextures()
503503
void RenderProbeMgr::preBake()
504504
{
505505
RenderProbeMgr::smBakeReflectionProbes = true;
506-
GFXShader::addGlobalMacro("CAPTURING", String("1"));
507-
508-
//Con::setVariable("$Probes::Capturing", "1");
509-
mRenderMaximumNumOfLights = AdvancedLightBinManager::smMaximumNumOfLights;
510-
mRenderUseLightFade = AdvancedLightBinManager::smUseLightFade;
511-
512-
AdvancedLightBinManager::smMaximumNumOfLights = -1;
513-
AdvancedLightBinManager::smUseLightFade = false;
514-
515-
//kickstart rendering
516-
LightManager* lm = LIGHTMGR;
517-
if (lm)
518-
{
519-
SceneManager* sm = lm->getSceneManager();
520-
if (sm && sm->getContainer() == &gClientContainer)
521-
{
522-
lm->deactivate();
523-
lm->activate(sm);
524-
}
525-
}
506+
Con::setBoolVariable("$ReflectionProbes::Capturing", RenderProbeMgr::smBakeReflectionProbes);
526507
}
527508

528509
void RenderProbeMgr::postBake()
529510
{
530511
RenderProbeMgr::smBakeReflectionProbes = false;
531-
GFXShader::addGlobalMacro("CAPTURING", String("0"));
532-
//Con::setVariable("$Probes::Capturing", "0");
533-
AdvancedLightBinManager::smMaximumNumOfLights = mRenderMaximumNumOfLights;
534-
AdvancedLightBinManager::smUseLightFade = mRenderUseLightFade;
535-
536-
//kickstart rendering
537-
LightManager* lm = LIGHTMGR;
538-
if (lm)
539-
{
540-
SceneManager* sm = lm->getSceneManager();
541-
if (sm && sm->getContainer() == &gClientContainer)
542-
{
543-
lm->deactivate();
544-
lm->activate(sm);
545-
}
546-
}
512+
Con::setBoolVariable("$ReflectionProbes::Capturing", RenderProbeMgr::smBakeReflectionProbes);
547513
}
548514

549515
void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)

Engine/source/scene/sceneRenderState.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ class SceneRenderState
223223
/// Returns true if this is not one of the other rendering passes.
224224
bool isOtherPass() const { return mScenePassType >= SPT_Other; }
225225

226+
bool isCapturing() const { return Con::getBoolVariable("$ReflectionProbes::Capturing", false); };
226227
/// @}
227228

228229
/// @name Render Style

Engine/source/shaderGen/shaderGenVars.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ const String ShaderGenVars::vectorLightDirection("$vectorLightDirection");
7474
const String ShaderGenVars::vectorLightColor("$vectorLightColor");
7575
const String ShaderGenVars::vectorLightBrightness("$vectorLightBrightness");
7676

77+
const String ShaderGenVars::isCapturing("$isCapturing");
78+
7779
const String ShaderGenVars::ormConfig("$ORMConfig");
7880
const String ShaderGenVars::roughness("$roughness");
7981
const String ShaderGenVars::metalness("$metalness");

Engine/source/shaderGen/shaderGenVars.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ struct ShaderGenVars
8686
const static String vectorLightColor;
8787
const static String vectorLightBrightness;
8888

89+
const static String isCapturing;
90+
8991
const static String ormConfig;
9092
const static String roughness;
9193
const static String metalness;

Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "./brdf.glsl"
2525

2626
uniform float maxProbeDrawDistance;
27+
uniform int isCapturing;
2728

2829
#ifndef TORQUE_SHADERGEN
2930
#line 27
@@ -54,10 +55,6 @@ uniform vec4 albedo;
5455

5556
#define MAX_FORWARD_LIGHT 4
5657

57-
#ifndef CAPTURING
58-
#define CAPTURING 0
59-
#endif
60-
6158
#ifndef DEBUGVIZ_ATTENUATION
6259
#define DEBUGVIZ_ATTENUATION 0
6360
#endif
@@ -237,44 +234,39 @@ vec3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight)
237234
float D = D_GGX(surfaceToLight.NdotH, surface.linearRoughnessSq);
238235
vec3 Fr = D * F * Vis;
239236

240-
#if CAPTURING == 1
241-
return mix(Fd + Fr, surface.baseColor.rgb, surface.metalness);
242-
#else
243-
return Fd + Fr;
244-
#endif
245-
237+
if(isCapturing == 1)
238+
return mix(Fd + Fr, surface.baseColor.rgb, surface.metalness);
239+
else
240+
return Fd + Fr;
246241
}
247242

248243
vec3 getDirectionalLight(Surface surface, SurfaceToLight surfaceToLight, vec3 lightColor, float lightIntensity, float shadow)
249244
{
250-
#if CAPTURING == 1
251245
float lightfloor = CAPTURE_LIGHT_FLOOR;
252-
#else
253-
float lightfloor = 0.0;
254-
#endif
246+
if(isCapturing != 1)
247+
lightfloor = 0.0;
248+
255249
vec3 factor = lightColor * max(surfaceToLight.NdotL * shadow * lightIntensity, lightfloor);
256250
return evaluateStandardBRDF(surface,surfaceToLight) * factor;
257251
}
258252

259253
vec3 getPunctualLight(Surface surface, SurfaceToLight surfaceToLight, vec3 lightColor, float lightIntensity, float radius, float shadow)
260254
{
261-
#if CAPTURING == 1
262255
float lightfloor = CAPTURE_LIGHT_FLOOR;
263-
#else
264-
float lightfloor = 0.0;
265-
#endif
256+
if(isCapturing != 1)
257+
lightfloor = 0.0;
258+
266259
float attenuation = getDistanceAtt(surfaceToLight.Lu, radius);
267260
vec3 factor = lightColor * max(surfaceToLight.NdotL * shadow * lightIntensity * attenuation, lightfloor);
268261
return evaluateStandardBRDF(surface,surfaceToLight) * factor;
269262
}
270263

271264
vec3 getSpotlight(Surface surface, SurfaceToLight surfaceToLight, vec3 lightColor, float lightIntensity, float radius, vec3 lightDir, vec2 lightSpotParams, float shadow)
272265
{
273-
#if CAPTURING == 1
274266
float lightfloor = CAPTURE_LIGHT_FLOOR;
275-
#else
276-
float lightfloor = 0.0;
277-
#endif
267+
if(isCapturing != 1)
268+
lightfloor = 0.0;
269+
278270
float attenuation = 1.0f;
279271
attenuation *= getDistanceAtt(surfaceToLight.Lu, radius);
280272
attenuation *= getSpotAngleAtt(-surfaceToLight.L, lightDir, lightSpotParams.xy);
@@ -567,11 +559,11 @@ vec4 computeForwardProbes(Surface surface,
567559
float horizonOcclusion = 1.3;
568560
float horizon = saturate( 1 + horizonOcclusion * dot(surface.R, surface.N));
569561
horizon *= horizon;
570-
#if CAPTURING == 1
571-
return vec4(mix((irradiance + specular* horizon),surface.baseColor.rgb,surface.metalness),0);
572-
#else
573-
return vec4((irradiance + specular* horizon) , 0);//alpha writes disabled
574-
#endif
562+
563+
if(isCapturing == 1)
564+
return vec4(mix((irradiance + specular* horizon),surface.baseColor.rgb,surface.metalness),0);
565+
else
566+
return vec4((irradiance + specular* horizon) , 0);//alpha writes disabled
575567
}
576568

577569
vec4 debugVizForwardProbes(Surface surface,

0 commit comments

Comments
 (0)