add glow modes

This commit is contained in:
Glenn Maynard
2003-05-04 22:35:42 +00:00
parent c4269307c1
commit df0a74e1b5
6 changed files with 35 additions and 17 deletions
+8
View File
@@ -690,6 +690,13 @@ void Actor::Command( CString sCommandString )
/* Add left/right/top/bottom for alpha if needed. */
else if( sName=="diffusealpha" ) { for(int i = 0; i < 4; ++i) { RageColor c = GetDiffuses( i ); c.a = fParam(1); SetDiffuses( i, c ); } }
else if( sName=="glow" ) SetGlow( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) );
else if( sName=="glowmode" ) {
if(!sParam(1).CompareNoCase("whiten"))
SetGlowMode( GLOW_WHITEN );
else if(!sParam(1).CompareNoCase("brighten"))
SetGlowMode( GLOW_BRIGHTEN );
else ASSERT(0);
}
else if( sName=="rotationx" ) SetRotationX( fParam(1) );
else if( sName=="rotationy" ) SetRotationY( fParam(1) );
else if( sName=="rotationz" ) SetRotationZ( fParam(1) );
@@ -770,6 +777,7 @@ void Actor::TweenState::Init()
for(int i=0; i<4; i++)
diffuse[i] = RageColor( 1, 1, 1, 1 );
glow = RageColor( 1, 1, 1, 0 );
glowmode = GLOW_WHITEN;
}
void Actor::TweenState::MakeWeightedAverage( TweenState& average_out, const TweenState& ts1, const TweenState& ts2, float fPercentBetween )
+3
View File
@@ -46,6 +46,7 @@ public:
RageVector3 scale;
RageColor diffuse[4];
RageColor glow;
GlowMode glowmode;
void Init();
static void MakeWeightedAverage( TweenState& average_out, const TweenState& ts1, const TweenState& ts2, float fPercentBetween );
@@ -132,6 +133,8 @@ public:
virtual RageColor GetDiffuses( int i ) { return DestTweenState().diffuse[i]; };
virtual void SetGlow( RageColor c ) { DestTweenState().glow = c; };
virtual RageColor GetGlow() { return DestTweenState().glow; };
virtual void SetGlowMode( GlowMode m ) { DestTweenState().glowmode = m; };
virtual GlowMode GetGlowMode() { return DestTweenState().glowmode; };
virtual void BeginTweening( float time, TweenType tt = TWEEN_LINEAR );
+1 -1
View File
@@ -338,7 +338,7 @@ void BitmapText::DrawPrimitives()
/* render the glow pass */
if( m_temp.glow.a > 0.0001f )
{
DISPLAY->SetTextureModeGlow();
DISPLAY->SetTextureModeGlow(m_temp.glowmode);
for( unsigned i=0; i<verts.size(); i++ )
verts[i].c = m_temp.glow;
+21 -14
View File
@@ -913,24 +913,31 @@ void RageDisplay::SetBlendMode(int src, int dst)
glBlendFunc( GLenum(src), GLenum(dst) );
}
void RageDisplay::SetTextureModeGlow()
void RageDisplay::SetTextureModeGlow(GlowMode m)
{
if(!m_oglspecs->EXT_texture_env_combine) {
if(m == GLOW_WHITEN && !m_oglspecs->EXT_texture_env_combine)
m = GLOW_BRIGHTEN; /* we can't do GLOW_WHITEN */
switch(m)
{
case GLOW_BRIGHTEN:
SetBlendMode( GL_SRC_ALPHA, GL_ONE );
return;
case GLOW_WHITEN:
/* Source color is the diffuse color only: */
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_RGB_EXT), GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_RGB_EXT), GL_PRIMARY_COLOR_EXT);
/* Source alpha is texture alpha * diffuse alpha: */
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_ALPHA_EXT), GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND0_ALPHA_EXT), GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_ALPHA_EXT), GL_PRIMARY_COLOR_EXT);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND1_ALPHA_EXT), GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE1_ALPHA_EXT), GL_TEXTURE);
return;
}
/* Source color is the diffuse color only: */
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_RGB_EXT), GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_RGB_EXT), GL_PRIMARY_COLOR_EXT);
/* Source alpha is texture alpha * diffuse alpha: */
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_ALPHA_EXT), GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND0_ALPHA_EXT), GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_ALPHA_EXT), GL_PRIMARY_COLOR_EXT);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND1_ALPHA_EXT), GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE1_ALPHA_EXT), GL_TEXTURE);
}
void RageDisplay::SetBlendModeNormal()
+1 -1
View File
@@ -61,7 +61,7 @@ public:
void SetTexture( RageTexture* pTexture );
void SetTextureModeModulate();
void SetTextureModeGlow();
void SetTextureModeGlow(GlowMode m = GLOW_WHITEN );
void SetBlendModeNormal();
void SetBlendModeAdd();
bool ZBufferEnabled() const;
+1 -1
View File
@@ -321,7 +321,7 @@ void Sprite::DrawPrimitives()
//////////////////////
if( m_temp.glow.a > 0.0001f )
{
DISPLAY->SetTextureModeGlow();
DISPLAY->SetTextureModeGlow(m_temp.glowmode);
v[0].c = v[1].c = v[2].c = v[3].c = m_temp.glow;
DISPLAY->DrawQuad( v );
}