mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Merge pull request #1580 from Azaezel/alpha41/ParticleGlow
Alpha41/particle glow
This commit is contained in:
commit
486cb63528
5 changed files with 21 additions and 4 deletions
|
|
@ -1122,15 +1122,19 @@ void GFXGLShader::setConstantsFromBuffer(U8* buffer)
|
||||||
// Set sampler number on our program.
|
// Set sampler number on our program.
|
||||||
glUniform1i(handle->mDesc.bindPoint, handle->mDesc.samplerReg);
|
glUniform1i(handle->mDesc.bindPoint, handle->mDesc.samplerReg);
|
||||||
break;
|
break;
|
||||||
|
case GFXSCT_Bool:
|
||||||
case GFXSCT_Int:
|
case GFXSCT_Int:
|
||||||
glUniform1iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
glUniform1iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
||||||
break;
|
break;
|
||||||
|
case GFXSCT_Bool2:
|
||||||
case GFXSCT_Int2:
|
case GFXSCT_Int2:
|
||||||
glUniform2iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
glUniform2iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
||||||
break;
|
break;
|
||||||
|
case GFXSCT_Bool3:
|
||||||
case GFXSCT_Int3:
|
case GFXSCT_Int3:
|
||||||
glUniform3iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
glUniform3iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
||||||
break;
|
break;
|
||||||
|
case GFXSCT_Bool4:
|
||||||
case GFXSCT_Int4:
|
case GFXSCT_Int4:
|
||||||
glUniform4iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
glUniform4iv(handle->mDesc.bindPoint, handle->mDesc.arraySize, (GLint*)(mGlobalConstBuffer + handle->mDesc.offset));
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,7 @@ void RenderParticleMgr::renderParticle(ParticleRenderInst* ri, SceneRenderState*
|
||||||
|
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaFactorSC, alphaFactor );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaFactorSC, alphaFactor );
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaScaleSC, alphaScale );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaScaleSC, alphaScale );
|
||||||
|
mParticleShaderConsts.mShaderConsts->setSafe(mParticleShaderConsts.mGlowSC, ri->glow);
|
||||||
|
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mFSModelViewProjSC, *ri->modelViewProj );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mFSModelViewProjSC, *ri->modelViewProj );
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mOneOverFarSC, 1.0f / state->getFarPlane() );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mOneOverFarSC, 1.0f / state->getFarPlane() );
|
||||||
|
|
@ -556,6 +557,7 @@ bool RenderParticleMgr::_initShader()
|
||||||
mParticleShaderConsts.mOneOverSoftnessSC = mParticleShader->getShaderConstHandle( "$oneOverSoftness" );
|
mParticleShaderConsts.mOneOverSoftnessSC = mParticleShader->getShaderConstHandle( "$oneOverSoftness" );
|
||||||
mParticleShaderConsts.mAlphaFactorSC = mParticleShader->getShaderConstHandle( "$alphaFactor" );
|
mParticleShaderConsts.mAlphaFactorSC = mParticleShader->getShaderConstHandle( "$alphaFactor" );
|
||||||
mParticleShaderConsts.mAlphaScaleSC = mParticleShader->getShaderConstHandle( "$alphaScale" );
|
mParticleShaderConsts.mAlphaScaleSC = mParticleShader->getShaderConstHandle( "$alphaScale" );
|
||||||
|
mParticleShaderConsts.mGlowSC = mParticleShader->getShaderConstHandle("$glow");
|
||||||
mParticleShaderConsts.mFSModelViewProjSC = mParticleShader->getShaderConstHandle( "$fsModelViewProj" );
|
mParticleShaderConsts.mFSModelViewProjSC = mParticleShader->getShaderConstHandle( "$fsModelViewProj" );
|
||||||
mParticleShaderConsts.mDeferredTargetParamsSC = mParticleShader->getShaderConstHandle( "$deferredTargetParams" );
|
mParticleShaderConsts.mDeferredTargetParamsSC = mParticleShader->getShaderConstHandle( "$deferredTargetParams" );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,7 @@ protected:
|
||||||
GFXShaderConstHandle *mDeferredTargetParamsSC;
|
GFXShaderConstHandle *mDeferredTargetParamsSC;
|
||||||
GFXShaderConstHandle *mAlphaFactorSC;
|
GFXShaderConstHandle *mAlphaFactorSC;
|
||||||
GFXShaderConstHandle *mAlphaScaleSC;
|
GFXShaderConstHandle *mAlphaScaleSC;
|
||||||
|
GFXShaderConstHandle* mGlowSC;
|
||||||
GFXShaderConstHandle *mSamplerDiffuse;
|
GFXShaderConstHandle *mSamplerDiffuse;
|
||||||
GFXShaderConstHandle *mSamplerDeferredTex;
|
GFXShaderConstHandle *mSamplerDeferredTex;
|
||||||
GFXShaderConstHandle *mSamplerParaboloidLightMap;
|
GFXShaderConstHandle *mSamplerParaboloidLightMap;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "torque.glsl"
|
#include "torque.glsl"
|
||||||
#include "hlslCompat.glsl"
|
#include "hlslCompat.glsl"
|
||||||
|
|
||||||
|
|
@ -77,6 +76,7 @@ vec4 lmSample( vec3 nrm )
|
||||||
|
|
||||||
uniform float alphaFactor;
|
uniform float alphaFactor;
|
||||||
uniform float alphaScale;
|
uniform float alphaScale;
|
||||||
|
uniform bool glow;
|
||||||
|
|
||||||
out vec4 OUT_col;
|
out vec4 OUT_col;
|
||||||
|
|
||||||
|
|
@ -106,7 +106,12 @@ void main()
|
||||||
|
|
||||||
// Scale output color by the alpha factor (turn LerpAlpha into pre-multiplied alpha)
|
// Scale output color by the alpha factor (turn LerpAlpha into pre-multiplied alpha)
|
||||||
vec3 colorScale = ( alphaFactor < 0.0 ? IN_color.rgb * diffuse.rgb : vec3( alphaFactor > 0.0 ? IN_color.a * diffuse.a * alphaFactor * softBlend : softBlend ) );
|
vec3 colorScale = ( alphaFactor < 0.0 ? IN_color.rgb * diffuse.rgb : vec3( alphaFactor > 0.0 ? IN_color.a * diffuse.a * alphaFactor * softBlend : softBlend ) );
|
||||||
|
if (glow)
|
||||||
|
{
|
||||||
|
vec3 glowCol = (IN_color * diffuse).rgb*10;//pow((IN_color * diffuse).rgb*10,3.54406804435);
|
||||||
|
glowCol*=glowCol*glowCol*0.54406804435;
|
||||||
|
colorScale *= glowCol.rgb;
|
||||||
|
}
|
||||||
OUT_col = hdrEncode( vec4( IN_color.rgb * diffuse.rgb * colorScale,
|
OUT_col = hdrEncode( vec4( IN_color.rgb * diffuse.rgb * colorScale,
|
||||||
IN_color.a * diffuse.a * softBlend * alphaScale ) );
|
IN_color.a * diffuse.a * softBlend * alphaScale ) );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ float4 lmSample( float3 nrm )
|
||||||
|
|
||||||
uniform float alphaFactor;
|
uniform float alphaFactor;
|
||||||
uniform float alphaScale;
|
uniform float alphaScale;
|
||||||
|
uniform bool glow;
|
||||||
|
|
||||||
float4 main( Conn IN ) : TORQUE_TARGET0
|
float4 main( Conn IN ) : TORQUE_TARGET0
|
||||||
{
|
{
|
||||||
|
|
@ -102,7 +103,11 @@ float4 main( Conn IN ) : TORQUE_TARGET0
|
||||||
|
|
||||||
// Scale output color by the alpha factor (turn LerpAlpha into pre-multiplied alpha)
|
// Scale output color by the alpha factor (turn LerpAlpha into pre-multiplied alpha)
|
||||||
float3 colorScale = ( alphaFactor < 0.0 ? IN.color.rgb * diffuse.rgb : ( alphaFactor > 0.0 ? IN.color.a * diffuse.a * alphaFactor * softBlend : softBlend ) );
|
float3 colorScale = ( alphaFactor < 0.0 ? IN.color.rgb * diffuse.rgb : ( alphaFactor > 0.0 ? IN.color.a * diffuse.a * alphaFactor * softBlend : softBlend ) );
|
||||||
|
if (glow)
|
||||||
|
{
|
||||||
|
float4 glowCol = float4(pow(max((IN.color * diffuse).rgb*10,0.0),3.54406804435),(IN.color * diffuse).a);
|
||||||
|
colorScale *= glowCol.rgb;
|
||||||
|
}
|
||||||
return hdrEncode( float4( IN.color.rgb * diffuse.rgb * colorScale,
|
return hdrEncode( float4( IN.color.rgb * diffuse.rgb * colorScale,
|
||||||
IN.color.a * diffuse.a * softBlend * alphaScale ) );
|
IN.color.a * diffuse.a * softBlend * alphaScale ) );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue