Skip to content

Commit

Permalink
#5584: Migrating built-in shaders
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Jan 25, 2022
1 parent a5a254b commit 4376287
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 2 deletions.
2 changes: 2 additions & 0 deletions include/irender.h
Expand Up @@ -537,6 +537,8 @@ enum class RenderViewType
enum class BuiltInShaderType
{
FlatshadeOverlay,
AasAreaBounds,
MissingModel,
};

/**
Expand Down
2 changes: 1 addition & 1 deletion radiant/ui/aas/RenderableAasFile.cpp
Expand Up @@ -58,7 +58,7 @@ void RenderableAasFile::onPreRender(const VolumeTest& volume)

if (!_normalShader)
{
_normalShader = renderSystem->capture("$AAS_AREA");
_normalShader = renderSystem->capture(BuiltInShaderType::AasAreaBounds);
}

if (!_textRenderer)
Expand Down
2 changes: 1 addition & 1 deletion radiantcore/model/NullModelNode.cpp
Expand Up @@ -59,7 +59,7 @@ void NullModelNode::setRenderSystem(const RenderSystemPtr& renderSystem)
{
if (renderSystem)
{
_fillShader = renderSystem->capture("$MISSING_MODEL");
_fillShader = renderSystem->capture(BuiltInShaderType::MissingModel);
_wireShader = renderSystem->capture("<1.0 0 0>");

_renderableBox.clear();
Expand Down
48 changes: 48 additions & 0 deletions radiantcore/rendersystem/backend/BuiltInShader.cpp
Expand Up @@ -48,6 +48,54 @@ void BuiltInShader::construct()
enableViewType(RenderViewType::OrthoView);
break;
}

case BuiltInShaderType::AasAreaBounds:
{
pass.setColour(1, 1, 1, 1);
pass.setRenderFlags(RENDER_DEPTHWRITE
| RENDER_DEPTHTEST
| RENDER_OVERRIDE);
pass.setSortPosition(OpenGLState::SORT_OVERLAY_LAST);
pass.setDepthFunc(GL_LEQUAL);

OpenGLState& hiddenLine = appendDefaultPass();
hiddenLine.setColour(1, 1, 1, 1);
hiddenLine.setRenderFlags(RENDER_DEPTHWRITE
| RENDER_DEPTHTEST
| RENDER_OVERRIDE
| RENDER_LINESTIPPLE);
hiddenLine.setSortPosition(OpenGLState::SORT_OVERLAY_LAST);
hiddenLine.setDepthFunc(GL_GREATER);

enableViewType(RenderViewType::Camera);
break;
}

case BuiltInShaderType::MissingModel:
{
// Render a custom texture
auto imgPath = module::GlobalModuleRegistry().getApplicationContext().getBitmapsPath();
imgPath += "missing_model.tga";

auto editorTex = GlobalMaterialManager().loadTextureFromFile(imgPath);
pass.texture0 = editorTex ? editorTex->getGLTexNum() : 0;

pass.setRenderFlag(RENDER_FILL);
pass.setRenderFlag(RENDER_TEXTURE_2D);
pass.setRenderFlag(RENDER_DEPTHTEST);
pass.setRenderFlag(RENDER_LIGHTING);
pass.setRenderFlag(RENDER_SMOOTH);
pass.setRenderFlag(RENDER_DEPTHWRITE);
pass.setRenderFlag(RENDER_CULLFACE);

// Set the GL color to white
pass.setColour(Colour4::WHITE());
pass.setSortPosition(OpenGLState::SORT_FULLBRIGHT);

enableViewType(RenderViewType::Camera);
break;
}

default:
throw std::runtime_error("Cannot construct this shader: " + getName());
}
Expand Down
6 changes: 6 additions & 0 deletions radiantcore/rendersystem/backend/OpenGLShader.cpp
Expand Up @@ -1133,6 +1133,7 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
#if 0
else if (_name == "$FLATSHADE_OVERLAY")
{
state.setRenderFlags(RENDER_CULLFACE
Expand Down Expand Up @@ -1163,6 +1164,7 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
#endif
else if (_name == "$CLIPPER_OVERLAY")
{
state.setColour(GlobalColourSchemeManager().getColour("clipper"));
Expand All @@ -1175,6 +1177,7 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
#if 0
else if (_name == "$AAS_AREA")
{
state.setColour(1, 1, 1, 1);
Expand All @@ -1195,6 +1198,8 @@ void OpenGLShader::construct()

enableViewType(RenderViewType::Camera);
}
#endif
#if 0
else if (_name == "$MISSING_MODEL")
{
// Render a custom texture
Expand All @@ -1218,6 +1223,7 @@ void OpenGLShader::construct()

enableViewType(RenderViewType::Camera);
}
#endif
else
{
assert(false);
Expand Down

0 comments on commit 4376287

Please sign in to comment.