|
|
@@ -60,8 +60,12 @@ SkyBox::SkyBox() |
|
|
|
|
|
mIsVBDirty = false; |
|
|
mDrawBottom = true; |
|
|
mDrawTop = true; |
|
|
mUseLighting = false; |
|
|
mExposure = 1.0; |
|
|
mPrimCount = 0; |
|
|
mFogBandHeight = 0; |
|
|
mFogBandWidth = 0.1f; |
|
|
|
|
|
mMatrixSet = reinterpret_cast<MatrixSet *>(dMalloc_aligned(sizeof(MatrixSet), 16)); |
|
|
constructInPlace(mMatrixSet); |
|
|
@@ -121,9 +125,24 @@ void SkyBox::initPersistFields() |
|
|
addField( "drawBottom", TypeBool, Offset( mDrawBottom, SkyBox ), |
|
|
"If false the bottom of the skybox is not rendered." ); |
|
|
|
|
|
addField( "drawTop", TypeBool, Offset( mDrawTop, SkyBox ), |
|
|
"If false the top of the skybox is not rendered." ); |
|
|
|
|
|
addField( "useLighting", TypeBool, Offset( mUseLighting, SkyBox ), |
|
|
"If false the top of the skybox is not rendered." ); |
|
|
|
|
|
addField( "Exposure", TypeF32, Offset( mExposure, SkyBox ), |
|
|
"The light exposure for lighting the skybox." ); |
|
|
|
|
|
addField( "SkyboxColor", TypeColorF, Offset( mSkyboxColor, SkyBox ), |
|
|
"Modulates the skybox color. This will blend with the ambient light color "); |
|
|
|
|
|
addField( "fogBandHeight", TypeF32, Offset( mFogBandHeight, SkyBox ), |
|
|
"The height (0-1) of the fog band from the horizon to the top of the SkyBox." ); |
|
|
|
|
|
addField( "fogBandWidth", TypeF32, Offset( mFogBandWidth, SkyBox ), |
|
|
"The width of the fog band (0-1), added on top of the fog height." ); |
|
|
|
|
|
endGroup( "Sky Box" ); |
|
|
|
|
|
Parent::initPersistFields(); |
|
|
@@ -141,7 +160,12 @@ U32 SkyBox::packUpdate( NetConnection *conn, U32 mask, BitStream *stream ) |
|
|
|
|
|
stream->write( mMatName ); |
|
|
stream->writeFlag( mDrawBottom ); |
|
|
stream->writeFlag( mDrawTop ); |
|
|
stream->writeFlag( mUseLighting ); |
|
|
stream->write( mExposure ); |
|
|
stream->write( mSkyboxColor ); |
|
|
stream->write( mFogBandHeight ); |
|
|
stream->write( mFogBandWidth ); |
|
|
|
|
|
return retMask; |
|
|
} |
|
|
@@ -159,19 +183,45 @@ void SkyBox::unpackUpdate( NetConnection *conn, BitStream *stream ) |
|
|
} |
|
|
|
|
|
bool drawBottom = stream->readFlag(); |
|
|
bool drawTop = stream->readFlag(); |
|
|
|
|
|
bool useLighting = stream->readFlag(); |
|
|
|
|
|
F32 exposure = 0; |
|
|
stream->read( &exposure ); |
|
|
|
|
|
ColorF skyboxColor; |
|
|
stream->read( &skyboxColor ); |
|
|
|
|
|
F32 bandHeight = 0; |
|
|
stream->read( &bandHeight ); |
|
|
F32 bandWidth = 0; |
|
|
stream->read( &bandWidth ); |
|
|
|
|
|
// If this flag has changed |
|
|
// we need to update the vertex buffer. |
|
|
if ( drawBottom != mDrawBottom || |
|
|
bandHeight != mFogBandHeight ) |
|
|
bandHeight != mFogBandHeight || |
|
|
bandWidth != mFogBandWidth || |
|
|
drawTop != mDrawTop || |
|
|
exposure != mExposure || |
|
|
skyboxColor != mSkyboxColor ) |
|
|
{ |
|
|
mDrawBottom = drawBottom; |
|
|
mDrawTop = drawTop; |
|
|
mFogBandHeight = bandHeight; |
|
|
mFogBandWidth = bandWidth; |
|
|
mExposure = exposure; |
|
|
mSkyboxColor = skyboxColor; |
|
|
mIsVBDirty = true; |
|
|
_initRender(); |
|
|
} |
|
|
|
|
|
if ( useLighting != mUseLighting) |
|
|
{ |
|
|
mUseLighting = useLighting; |
|
|
_updateMaterial(); |
|
|
} |
|
|
} |
|
|
|
|
|
void SkyBox::prepRenderImage( SceneRenderState *state ) |
|
|
@@ -191,7 +241,7 @@ void SkyBox::prepRenderImage( SceneRenderState *state ) |
|
|
ri->renderDelegate.bind( this, &SkyBox::_renderObject ); |
|
|
ri->type = RenderPassManager::RIT_Sky; |
|
|
ri->defaultKey = 10; |
|
|
ri->defaultKey2 = 0; |
|
|
ri->defaultKey2 = 2; |
|
|
state->getRenderPass()->addInst( ri ); |
|
|
} |
|
|
|
|
|
@@ -209,6 +259,10 @@ void SkyBox::_renderObject( ObjectRenderInst *ri, SceneRenderState *state, BaseM |
|
|
sgData.init( state ); |
|
|
sgData.objTrans = &worldMat; |
|
|
|
|
|
// fixes ambient |
|
|
sgData.ambientLightColor *= mSkyboxColor; |
|
|
sgData.ambientLightColor *= mExposure; |
|
|
|
|
|
mMatrixSet->restoreSceneViewProjection(); |
|
|
mMatrixSet->setWorld( worldMat ); |
|
|
if ( state->isReflectPass() ) |
|
|
@@ -244,7 +298,7 @@ void SkyBox::_renderObject( ObjectRenderInst *ri, SceneRenderState *state, BaseM |
|
|
mFogBandMatInst->setSceneInfo( state, sgData ); |
|
|
|
|
|
GFX->setVertexBuffer( mFogBandVB ); |
|
|
GFX->drawPrimitive( GFXTriangleList, 0, 16 ); |
|
|
GFX->drawPrimitive( GFXTriangleList, 0, 96 ); |
|
|
} |
|
|
} |
|
|
} |
|
|
@@ -256,7 +310,10 @@ void SkyBox::_initRender() |
|
|
U32 vertCount = 36; |
|
|
|
|
|
if ( !mDrawBottom ) |
|
|
vertCount = 30; |
|
|
vertCount = vertCount - 6; |
|
|
|
|
|
if (!mDrawTop) |
|
|
vertCount = vertCount - 6; |
|
|
|
|
|
mPrimCount = vertCount / 3; |
|
|
|
|
|
@@ -332,42 +389,63 @@ void SkyBox::_initRender() |
|
|
tmpVerts[22].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[23].texCoord.set( 0, 1.0f ); |
|
|
|
|
|
tmpVerts[24].point.set( -1, -1, 1 ); |
|
|
tmpVerts[25].point.set( -1, 1, 1 ); |
|
|
tmpVerts[26].point.set( 1, 1, 1 ); |
|
|
|
|
|
tmpVerts[24].texCoord.set( 0, 0 ); |
|
|
tmpVerts[25].texCoord.set( 1.0f, 0 ); |
|
|
tmpVerts[26].texCoord.set( 1.0f, 1.0f ); |
|
|
|
|
|
tmpVerts[27].point.set( -1, -1, 1 ); |
|
|
tmpVerts[28].point.set( 1, 1, 1 ); |
|
|
tmpVerts[29].point.set( 1, -1, 1 ); |
|
|
|
|
|
tmpVerts[27].texCoord.set( 0, 0 ); |
|
|
tmpVerts[28].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[29].texCoord.set( 0, 1.0f ); |
|
|
|
|
|
// Only set up these |
|
|
// vertices if the SkyBox |
|
|
// is set to render the bottom face. |
|
|
if ( mDrawBottom ) |
|
|
if ( mDrawTop ) |
|
|
{ |
|
|
tmpVerts[30].point.set( 1, 1, -1 ); |
|
|
tmpVerts[31].point.set( -1, 1, -1 ); |
|
|
tmpVerts[32].point.set( -1, -1, -1 ); |
|
|
// rendering the top face |
|
|
tmpVerts[24].point.set( -1, -1, 1 ); |
|
|
tmpVerts[25].point.set( -1, 1, 1 ); |
|
|
tmpVerts[26].point.set( 1, 1, 1 ); |
|
|
|
|
|
tmpVerts[24].texCoord.set( 0, 0 ); |
|
|
tmpVerts[25].texCoord.set( 1.0f, 0 ); |
|
|
tmpVerts[26].texCoord.set( 1.0f, 1.0f ); |
|
|
|
|
|
tmpVerts[27].point.set( -1, -1, 1 ); |
|
|
tmpVerts[28].point.set( 1, 1, 1 ); |
|
|
tmpVerts[29].point.set( 1, -1, 1 ); |
|
|
|
|
|
tmpVerts[27].texCoord.set( 0, 0 ); |
|
|
tmpVerts[28].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[29].texCoord.set( 0, 1.0f ); |
|
|
|
|
|
if ( mDrawBottom ) { |
|
|
// we are rendering top and bottom faces |
|
|
tmpVerts[30].point.set( 1, 1, -1 ); |
|
|
tmpVerts[31].point.set( -1, 1, -1 ); |
|
|
tmpVerts[32].point.set( -1, -1, -1 ); |
|
|
|
|
|
tmpVerts[30].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[31].texCoord.set( 1.0f, 0 ); |
|
|
tmpVerts[32].texCoord.set( 0, 0 ); |
|
|
|
|
|
tmpVerts[33].point.set( 1, -1, -1 ); |
|
|
tmpVerts[34].point.set( 1, 1, -1 ); |
|
|
tmpVerts[35].point.set( -1, -1, -1 ); |
|
|
|
|
|
tmpVerts[33].texCoord.set( 0, 1.0f ); |
|
|
tmpVerts[34].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[35].texCoord.set( 0, 0 ); |
|
|
} |
|
|
} |
|
|
|
|
|
// Only set up these vertices if the SkyBox |
|
|
// is set to render the bottom face and not the top |
|
|
if ( mDrawBottom && !mDrawTop) { |
|
|
tmpVerts[24].point.set( 1, 1, -1 ); |
|
|
tmpVerts[25].point.set( -1, 1, -1 ); |
|
|
tmpVerts[26].point.set( -1, -1, -1 ); |
|
|
|
|
|
tmpVerts[30].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[31].texCoord.set( 1.0f, 0 ); |
|
|
tmpVerts[32].texCoord.set( 0, 0 ); |
|
|
tmpVerts[24].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[25].texCoord.set( 1.0f, 0 ); |
|
|
tmpVerts[26].texCoord.set( 0, 0 ); |
|
|
|
|
|
tmpVerts[33].point.set( 1, -1, -1 ); |
|
|
tmpVerts[34].point.set( 1, 1, -1 ); |
|
|
tmpVerts[35].point.set( -1, -1, -1 ); |
|
|
tmpVerts[27].point.set( 1, -1, -1 ); |
|
|
tmpVerts[28].point.set( 1, 1, -1 ); |
|
|
tmpVerts[29].point.set( -1, -1, -1 ); |
|
|
|
|
|
tmpVerts[33].texCoord.set( 0, 1.0f ); |
|
|
tmpVerts[34].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[35].texCoord.set( 0, 0 ); |
|
|
tmpVerts[27].texCoord.set( 0, 1.0f ); |
|
|
tmpVerts[28].texCoord.set( 1.0f, 1.0f ); |
|
|
tmpVerts[29].texCoord.set( 0, 0 ); |
|
|
} |
|
|
|
|
|
VectorF tmp( 0, 0, 0 ); |
|
|
@@ -414,147 +492,84 @@ void SkyBox::_initRender() |
|
|
delete [] tmpVerts; |
|
|
|
|
|
if ( mFogBandVB.isNull() ) |
|
|
mFogBandVB.set( GFX, 48, GFXBufferTypeStatic ); |
|
|
mFogBandVB.set( GFX, 288, GFXBufferTypeStatic ); |
|
|
//mFogBandVB.set( GFX, 192, GFXBufferTypeStatic ); |
|
|
//mFogBandVB.set( GFX, 48, GFXBufferTypeStatic ); |
|
|
|
|
|
GFXVertexPC *bandVertPtr = mFogBandVB.lock(); |
|
|
if(!bandVertPtr) return; |
|
|
|
|
|
// Grab the fog color. |
|
|
ColorI fogColor( mLastFogColor.red * 255, mLastFogColor.green * 255, mLastFogColor.blue * 255 ); |
|
|
ColorI fogColorAlpha( mLastFogColor.red * 255, mLastFogColor.green * 255, mLastFogColor.blue * 255, 0 ); |
|
|
|
|
|
// Upper portion of band geometry. |
|
|
{ |
|
|
bandVertPtr[0].point.set( -1, -1, mFogBandHeight ); |
|
|
bandVertPtr[1].point.set( 1, -1, mFogBandHeight ); |
|
|
bandVertPtr[2].point.set( 1, -1, 0 ); |
|
|
|
|
|
bandVertPtr[0].color.set( fogColorAlpha ); |
|
|
bandVertPtr[1].color.set( fogColorAlpha ); |
|
|
bandVertPtr[2].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[3].point.set( -1, -1, mFogBandHeight ); |
|
|
bandVertPtr[4].point.set( 1, -1, 0 ); |
|
|
bandVertPtr[5].point.set( -1, -1, 0 ); |
|
|
|
|
|
bandVertPtr[3].color.set( fogColorAlpha ); |
|
|
bandVertPtr[4].color.set( fogColor ); |
|
|
bandVertPtr[5].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[6].point.set( 1, -1, mFogBandHeight ); |
|
|
bandVertPtr[7].point.set( 1, 1, mFogBandHeight ); |
|
|
bandVertPtr[8].point.set( 1, 1, 0 ); |
|
|
|
|
|
bandVertPtr[6].color.set( fogColorAlpha ); |
|
|
bandVertPtr[7].color.set( fogColorAlpha ); |
|
|
bandVertPtr[8].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[9].point.set( 1, -1, mFogBandHeight ); |
|
|
bandVertPtr[10].point.set( 1, 1, 0 ); |
|
|
bandVertPtr[11].point.set( 1, -1, 0 ); |
|
|
|
|
|
bandVertPtr[9].color.set( fogColorAlpha ); |
|
|
bandVertPtr[10].color.set( fogColor ); |
|
|
bandVertPtr[11].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[12].point.set( -1, 1, mFogBandHeight ); |
|
|
bandVertPtr[13].point.set( -1, -1, mFogBandHeight ); |
|
|
bandVertPtr[14].point.set( -1, -1, 0 ); |
|
|
|
|
|
bandVertPtr[12].color.set( fogColorAlpha ); |
|
|
bandVertPtr[13].color.set( fogColorAlpha ); |
|
|
bandVertPtr[14].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[15].point.set( -1, 1, mFogBandHeight ); |
|
|
bandVertPtr[16].point.set( -1, -1, 0 ); |
|
|
bandVertPtr[17].point.set( -1, 1, 0 ); |
|
|
|
|
|
bandVertPtr[15].color.set( fogColorAlpha ); |
|
|
bandVertPtr[16].color.set( fogColor ); |
|
|
bandVertPtr[17].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[18].point.set( 1, 1, mFogBandHeight ); |
|
|
bandVertPtr[19].point.set( -1, 1, mFogBandHeight ); |
|
|
bandVertPtr[20].point.set( -1, 1, 0 ); |
|
|
|
|
|
bandVertPtr[18].color.set( fogColorAlpha ); |
|
|
bandVertPtr[19].color.set( fogColorAlpha ); |
|
|
bandVertPtr[20].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[21].point.set( 1, 1, mFogBandHeight ); |
|
|
bandVertPtr[22].point.set( -1, 1, 0 ); |
|
|
bandVertPtr[23].point.set( 1, 1, 0 ); |
|
|
|
|
|
bandVertPtr[21].color.set( fogColorAlpha ); |
|
|
bandVertPtr[22].color.set( fogColor ); |
|
|
bandVertPtr[23].color.set( fogColor ); |
|
|
} |
|
|
|
|
|
// Lower portion of band geometry. |
|
|
{ |
|
|
bandVertPtr[24].point.set( -1, -1, 0 ); |
|
|
bandVertPtr[25].point.set( 1, -1, 0 ); |
|
|
bandVertPtr[26].point.set( 1, -1, -1 ); |
|
|
|
|
|
bandVertPtr[24].color.set( fogColor ); |
|
|
bandVertPtr[25].color.set( fogColor ); |
|
|
bandVertPtr[26].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[27].point.set( -1, -1, 0 ); |
|
|
bandVertPtr[28].point.set( 1, -1, -1 ); |
|
|
bandVertPtr[29].point.set( -1, -1, -1 ); |
|
|
|
|
|
bandVertPtr[27].color.set( fogColor ); |
|
|
bandVertPtr[28].color.set( fogColor ); |
|
|
bandVertPtr[29].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[30].point.set( 1, -1, 0 ); |
|
|
bandVertPtr[31].point.set( 1, 1, 0 ); |
|
|
bandVertPtr[32].point.set( 1, 1, -1 ); |
|
|
|
|
|
bandVertPtr[30].color.set( fogColor ); |
|
|
bandVertPtr[31].color.set( fogColor ); |
|
|
bandVertPtr[32].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[33].point.set( 1, -1, 0 ); |
|
|
bandVertPtr[34].point.set( 1, 1, -1 ); |
|
|
bandVertPtr[35].point.set( 1, -1, -1 ); |
|
|
|
|
|
bandVertPtr[33].color.set( fogColor ); |
|
|
bandVertPtr[34].color.set( fogColor ); |
|
|
bandVertPtr[35].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[36].point.set( -1, 1, 0 ); |
|
|
bandVertPtr[37].point.set( -1, -1, 0 ); |
|
|
bandVertPtr[38].point.set( -1, -1, -1 ); |
|
|
|
|
|
bandVertPtr[36].color.set( fogColor ); |
|
|
bandVertPtr[37].color.set( fogColor ); |
|
|
bandVertPtr[38].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[39].point.set( -1, 1, 0 ); |
|
|
bandVertPtr[40].point.set( -1, -1, -1 ); |
|
|
bandVertPtr[41].point.set( -1, 1, -1 ); |
|
|
|
|
|
bandVertPtr[39].color.set( fogColor ); |
|
|
bandVertPtr[40].color.set( fogColor ); |
|
|
bandVertPtr[41].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[42].point.set( 1, 1, 0 ); |
|
|
bandVertPtr[43].point.set( -1, 1, 0 ); |
|
|
bandVertPtr[44].point.set( -1, 1, -1 ); |
|
|
|
|
|
bandVertPtr[42].color.set( fogColor ); |
|
|
bandVertPtr[43].color.set( fogColor ); |
|
|
bandVertPtr[44].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[45].point.set( 1, 1, 0 ); |
|
|
bandVertPtr[46].point.set( -1, 1, -1 ); |
|
|
bandVertPtr[47].point.set( 1, 1, -1 ); |
|
|
|
|
|
bandVertPtr[45].color.set( fogColor ); |
|
|
bandVertPtr[46].color.set( fogColor ); |
|
|
bandVertPtr[47].color.set( fogColor ); |
|
|
ColorI fogColorAlpha( mLastFogColor.red * 255, mLastFogColor.green * 255, mLastFogColor.blue * 255, 20 ); |
|
|
ColorI fogColorAlphaFaint( mLastFogColor.red * 255, mLastFogColor.green * 255, mLastFogColor.blue * 255, 0 ); |
|
|
ColorI fogColorPink( 255, 128, 128 ); |
|
|
|
|
|
F32 fogBase = -1.0f + mFogBandHeight; |
|
|
F32 totalFogHeight = mFogBandHeight + mFogBandWidth - 1.0f; |
|
|
if (totalFogHeight > 1.0) |
|
|
totalFogHeight = 1.0; |
|
|
F32 degree = M_PI_F / 8.0f; |
|
|
int pointNum = 0; |
|
|
|
|
|
for (int i=0;i<16;i++) { |
|
|
F32 x1 = sin(degree * F32(i)); |
|
|
F32 y1 = cos(degree * F32(i)); |
|
|
F32 x2 = sin(degree * (F32(i) + 1.0f)); |
|
|
F32 y2 = cos(degree * (F32(i) + 1.0f)); |
|
|
pointNum = i * 18; |
|
|
|
|
|
// very faint uppder portion |
|
|
bandVertPtr[pointNum].point.set( x1, y1, totalFogHeight + mFogBandWidth ); |
|
|
bandVertPtr[pointNum+1].point.set( x2, y2, totalFogHeight + mFogBandWidth); |
|
|
bandVertPtr[pointNum+2].point.set( x1, y1, totalFogHeight); |
|
|
|
|
|
bandVertPtr[pointNum].color.set( fogColorAlphaFaint ); |
|
|
bandVertPtr[pointNum+1].color.set( fogColorAlphaFaint ); |
|
|
bandVertPtr[pointNum+2].color.set( fogColorAlpha ); |
|
|
|
|
|
bandVertPtr[pointNum+3].point.set( x2, y2, totalFogHeight + mFogBandWidth ); |
|
|
bandVertPtr[pointNum+4].point.set( x2, y2, totalFogHeight ); |
|
|
bandVertPtr[pointNum+5].point.set( x1, y1, totalFogHeight ); |
|
|
|
|
|
bandVertPtr[pointNum+3].color.set( fogColorAlphaFaint ); |
|
|
bandVertPtr[pointNum+4].color.set( fogColorAlpha ); |
|
|
bandVertPtr[pointNum+5].color.set( fogColorAlpha ); |
|
|
|
|
|
// middle portion |
|
|
bandVertPtr[pointNum+6].point.set( x1, y1, totalFogHeight ); |
|
|
bandVertPtr[pointNum+7].point.set( x2, y2, totalFogHeight ); |
|
|
bandVertPtr[pointNum+8].point.set( x1, y1, fogBase ); |
|
|
|
|
|
bandVertPtr[pointNum+6].color.set( fogColorAlpha ); |
|
|
bandVertPtr[pointNum+7].color.set( fogColorAlpha ); |
|
|
bandVertPtr[pointNum+8].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[pointNum+9].point.set( x2, y2, totalFogHeight ); |
|
|
bandVertPtr[pointNum+10].point.set( x2, y2, fogBase ); |
|
|
bandVertPtr[pointNum+11].point.set( x1, y1, fogBase ); |
|
|
|
|
|
bandVertPtr[pointNum+9].color.set( fogColorAlpha ); |
|
|
bandVertPtr[pointNum+10].color.set( fogColor ); |
|
|
bandVertPtr[pointNum+11].color.set( fogColor ); |
|
|
|
|
|
|
|
|
// lower portion |
|
|
bandVertPtr[pointNum+12].point.set( x1, y1, -1 ); |
|
|
bandVertPtr[pointNum+13].point.set( x1, y1, fogBase ); |
|
|
bandVertPtr[pointNum+14].point.set( x2, y2, -1 ); |
|
|
|
|
|
bandVertPtr[pointNum+12].color.set( fogColor ); |
|
|
bandVertPtr[pointNum+13].color.set( fogColor ); |
|
|
bandVertPtr[pointNum+14].color.set( fogColor ); |
|
|
|
|
|
bandVertPtr[pointNum+15].point.set( x1, y1, fogBase ); |
|
|
bandVertPtr[pointNum+16].point.set( x2, y2, fogBase ); |
|
|
bandVertPtr[pointNum+17].point.set( x2, y2, -1 ); |
|
|
|
|
|
bandVertPtr[pointNum+15].color.set( fogColor ); |
|
|
bandVertPtr[pointNum+16].color.set( fogColor ); |
|
|
bandVertPtr[pointNum+17].color.set( fogColor ); |
|
|
} |
|
|
|
|
|
mFogBandVB.unlock(); |
|
|
@@ -602,9 +617,10 @@ void SkyBox::_initMaterial() |
|
|
desc.setZReadWrite( true, false ); |
|
|
mMatInstance->addStateBlockDesc( desc ); |
|
|
|
|
|
// Also disable lighting on the skybox material by default. |
|
|
// Allow lighting on the skybox material by default. |
|
|
FeatureSet features = MATMGR->getDefaultFeatures(); |
|
|
features.removeFeature( MFT_RTLighting ); |
|
|
if ( !mUseLighting ) |
|
|
features.removeFeature( MFT_RTLighting ); |
|
|
features.removeFeature( MFT_Visibility ); |
|
|
|
|
|
// Now initialize the material. |
|
|
|