Added pass_post_bump for fullbright bump faces.
This commit is contained in:
@@ -129,6 +129,7 @@ public:
|
|||||||
PASS_FULLBRIGHT_SHINY,
|
PASS_FULLBRIGHT_SHINY,
|
||||||
PASS_SHINY,
|
PASS_SHINY,
|
||||||
PASS_BUMP,
|
PASS_BUMP,
|
||||||
|
PASS_POST_BUMP,
|
||||||
PASS_GLOW,
|
PASS_GLOW,
|
||||||
PASS_ALPHA,
|
PASS_ALPHA,
|
||||||
PASS_ALPHA_MASK,
|
PASS_ALPHA_MASK,
|
||||||
|
|||||||
@@ -637,9 +637,9 @@ BOOL LLDrawPoolBump::bindBumpMap(LLDrawInfo& params, S32 channel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLDrawPoolBump::beginBump()
|
void LLDrawPoolBump::beginBump(U32 pass)
|
||||||
{
|
{
|
||||||
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
|
if (!gPipeline.hasRenderBatches(pass))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -682,9 +682,9 @@ void LLDrawPoolBump::beginBump()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLDrawPoolBump::renderBump()
|
void LLDrawPoolBump::renderBump(U32 pass)
|
||||||
{
|
{
|
||||||
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
|
if (!gPipeline.hasRenderBatches(pass))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -697,13 +697,13 @@ void LLDrawPoolBump::renderBump()
|
|||||||
/// Get rid of z-fighting with non-bump pass.
|
/// Get rid of z-fighting with non-bump pass.
|
||||||
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
|
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
|
||||||
glPolygonOffset(-1.0f, -1.0f);
|
glPolygonOffset(-1.0f, -1.0f);
|
||||||
renderBump(LLRenderPass::PASS_BUMP, sVertexMask);
|
renderBump(pass, sVertexMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLDrawPoolBump::endBump()
|
void LLDrawPoolBump::endBump(U32 pass)
|
||||||
{
|
{
|
||||||
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
|
if (!gPipeline.hasRenderBatches(pass))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -720,6 +720,12 @@ void LLDrawPoolBump::endBump()
|
|||||||
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
S32 LLDrawPoolBump::getNumDeferredPasses()
|
||||||
|
{
|
||||||
|
static const LLCachedControl<bool> render_object_bump("RenderObjectBump",false);
|
||||||
|
return render_object_bump ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
void LLDrawPoolBump::beginDeferredPass(S32 pass)
|
void LLDrawPoolBump::beginDeferredPass(S32 pass)
|
||||||
{
|
{
|
||||||
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
|
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
|
||||||
@@ -774,17 +780,41 @@ void LLDrawPoolBump::renderDeferred(S32 pass)
|
|||||||
|
|
||||||
void LLDrawPoolBump::beginPostDeferredPass(S32 pass)
|
void LLDrawPoolBump::beginPostDeferredPass(S32 pass)
|
||||||
{
|
{
|
||||||
beginFullbrightShiny();
|
switch (pass)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
beginFullbrightShiny();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
beginBump(LLRenderPass::PASS_POST_BUMP);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLDrawPoolBump::endPostDeferredPass(S32 pass)
|
void LLDrawPoolBump::endPostDeferredPass(S32 pass)
|
||||||
{
|
{
|
||||||
endFullbrightShiny();
|
switch (pass)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
endFullbrightShiny();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
endBump(LLRenderPass::PASS_POST_BUMP);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLDrawPoolBump::renderPostDeferred(S32 pass)
|
void LLDrawPoolBump::renderPostDeferred(S32 pass)
|
||||||
{
|
{
|
||||||
renderFullbrightShiny();
|
switch (pass)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
renderFullbrightShiny();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
renderBump(LLRenderPass::PASS_POST_BUMP);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -75,16 +75,16 @@ public:
|
|||||||
void renderFullbrightShiny();
|
void renderFullbrightShiny();
|
||||||
void endFullbrightShiny();
|
void endFullbrightShiny();
|
||||||
|
|
||||||
void beginBump();
|
void beginBump(U32 pass = LLRenderPass::PASS_BUMP);
|
||||||
void renderBump();
|
void renderBump(U32 pass = LLRenderPass::PASS_BUMP);
|
||||||
void endBump();
|
void endBump(U32 pass = LLRenderPass::PASS_BUMP);
|
||||||
|
|
||||||
virtual S32 getNumDeferredPasses() { return 1; }
|
virtual S32 getNumDeferredPasses();
|
||||||
/*virtual*/ void beginDeferredPass(S32 pass);
|
/*virtual*/ void beginDeferredPass(S32 pass);
|
||||||
/*virtual*/ void endDeferredPass(S32 pass);
|
/*virtual*/ void endDeferredPass(S32 pass);
|
||||||
/*virtual*/ void renderDeferred(S32 pass);
|
/*virtual*/ void renderDeferred(S32 pass);
|
||||||
|
|
||||||
virtual S32 getNumPostDeferredPasses() { return 1; }
|
virtual S32 getNumPostDeferredPasses() { return 2; }
|
||||||
/*virtual*/ void beginPostDeferredPass(S32 pass);
|
/*virtual*/ void beginPostDeferredPass(S32 pass);
|
||||||
/*virtual*/ void endPostDeferredPass(S32 pass);
|
/*virtual*/ void endPostDeferredPass(S32 pass);
|
||||||
/*virtual*/ void renderPostDeferred(S32 pass);
|
/*virtual*/ void renderPostDeferred(S32 pass);
|
||||||
|
|||||||
@@ -2224,7 +2224,8 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
|
|||||||
model_mat = &(drawable->getRegion()->mRenderMatrix);
|
model_mat = &(drawable->getRegion()->mRenderMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
U8 bump = (type == LLRenderPass::PASS_BUMP ? facep->getTextureEntry()->getBumpmap() : 0);
|
|
||||||
|
U8 bump = (type == LLRenderPass::PASS_BUMP || type == LLRenderPass::PASS_POST_BUMP) ? facep->getTextureEntry()->getBumpmap() : 0;
|
||||||
|
|
||||||
LLViewerTexture* tex = facep->getTexture();
|
LLViewerTexture* tex = facep->getTexture();
|
||||||
|
|
||||||
@@ -2801,13 +2802,17 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||||||
}
|
}
|
||||||
else if (LLPipeline::sRenderDeferred)
|
else if (LLPipeline::sRenderDeferred)
|
||||||
{ //deferred rendering
|
{ //deferred rendering
|
||||||
if (te->getBumpmap())
|
if (te->getFullbright())
|
||||||
{ //register in deferred bump pass
|
|
||||||
registerFace(group, facep, LLRenderPass::PASS_BUMP);
|
|
||||||
}
|
|
||||||
else if (te->getFullbright())
|
|
||||||
{ //register in post deferred fullbright shiny pass
|
{ //register in post deferred fullbright shiny pass
|
||||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
|
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
|
||||||
|
if (te->getBumpmap())
|
||||||
|
{ //register in post deferred bump pass
|
||||||
|
registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (te->getBumpmap())
|
||||||
|
{ //register in deferred bump pass
|
||||||
|
registerFace(group, facep, LLRenderPass::PASS_BUMP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //register in deferred simple pass (deferred simple includes shiny)
|
{ //register in deferred simple pass (deferred simple includes shiny)
|
||||||
@@ -2833,6 +2838,10 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||||||
else if (fullbright)
|
else if (fullbright)
|
||||||
{ //fullbright
|
{ //fullbright
|
||||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
|
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
|
||||||
|
if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap())
|
||||||
|
{ //if this is the deferred render and a bump map is present, register in post deferred bump
|
||||||
|
registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6169,6 +6169,7 @@ void LLPipeline::renderDeferredLighting()
|
|||||||
LLPipeline::RENDER_TYPE_PASS_ALPHA,
|
LLPipeline::RENDER_TYPE_PASS_ALPHA,
|
||||||
LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
|
LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
|
||||||
LLPipeline::RENDER_TYPE_PASS_BUMP,
|
LLPipeline::RENDER_TYPE_PASS_BUMP,
|
||||||
|
LLPipeline::RENDER_TYPE_PASS_POST_BUMP,
|
||||||
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
|
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
|
||||||
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
|
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
|
||||||
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY,
|
LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY,
|
||||||
|
|||||||
@@ -345,6 +345,7 @@ public:
|
|||||||
RENDER_TYPE_PASS_FULLBRIGHT_SHINY = LLRenderPass::PASS_FULLBRIGHT_SHINY,
|
RENDER_TYPE_PASS_FULLBRIGHT_SHINY = LLRenderPass::PASS_FULLBRIGHT_SHINY,
|
||||||
RENDER_TYPE_PASS_SHINY = LLRenderPass::PASS_SHINY,
|
RENDER_TYPE_PASS_SHINY = LLRenderPass::PASS_SHINY,
|
||||||
RENDER_TYPE_PASS_BUMP = LLRenderPass::PASS_BUMP,
|
RENDER_TYPE_PASS_BUMP = LLRenderPass::PASS_BUMP,
|
||||||
|
RENDER_TYPE_PASS_POST_BUMP = LLRenderPass::PASS_POST_BUMP,
|
||||||
RENDER_TYPE_PASS_GLOW = LLRenderPass::PASS_GLOW,
|
RENDER_TYPE_PASS_GLOW = LLRenderPass::PASS_GLOW,
|
||||||
RENDER_TYPE_PASS_ALPHA = LLRenderPass::PASS_ALPHA,
|
RENDER_TYPE_PASS_ALPHA = LLRenderPass::PASS_ALPHA,
|
||||||
RENDER_TYPE_PASS_ALPHA_MASK = LLRenderPass::PASS_ALPHA_MASK,
|
RENDER_TYPE_PASS_ALPHA_MASK = LLRenderPass::PASS_ALPHA_MASK,
|
||||||
|
|||||||
Reference in New Issue
Block a user