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 590dafb commit 37f1e10
Show file tree
Hide file tree
Showing 11 changed files with 44 additions and 8 deletions.
6 changes: 6 additions & 0 deletions include/irender.h
Expand Up @@ -536,6 +536,12 @@ enum class RenderViewType

enum class BuiltInShaderType
{
// A medium-sized point
Point,

// A bigger version of "Point"
BigPoint,

WireframeOverlay,
FlatshadeOverlay,
AasAreaBounds,
Expand Down
2 changes: 1 addition & 1 deletion radiant/xyview/tools/MeasurementTool.cpp
Expand Up @@ -158,7 +158,7 @@ void MeasurementTool::ensureShaders(RenderSystem& renderSystem)

if (!_pointShader)
{
_pointShader = renderSystem.capture("$POINT");
_pointShader = renderSystem.capture(BuiltInShaderType::Point);
}
}

Expand Down
2 changes: 1 addition & 1 deletion radiantcore/brush/BrushNode.cpp
Expand Up @@ -420,7 +420,7 @@ void BrushNode::setRenderSystem(const RenderSystemPtr& renderSystem)

if (renderSystem)
{
_pointShader = renderSystem->capture("$POINT");
_pointShader = renderSystem->capture(BuiltInShaderType::Point);
_renderableVertices.queueUpdate();
}
else
Expand Down
2 changes: 1 addition & 1 deletion radiantcore/entity/doom3group/StaticGeometryNode.cpp
Expand Up @@ -393,7 +393,7 @@ void StaticGeometryNode::setRenderSystem(const RenderSystemPtr& renderSystem)
if (renderSystem)
{
_pivotShader = renderSystem->capture("$PIVOT");
_pointShader = renderSystem->capture("$BIGPOINT");
_pointShader = renderSystem->capture(BuiltInShaderType::BigPoint);
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion radiantcore/entity/light/LightNode.cpp
Expand Up @@ -392,7 +392,7 @@ void LightNode::setRenderSystem(const RenderSystemPtr& renderSystem)

if (renderSystem)
{
_vertexShader = renderSystem->capture("$BIGPOINT");
_vertexShader = renderSystem->capture(BuiltInShaderType::BigPoint);
_renderableVertices.queueUpdate();
}
else
Expand Down
2 changes: 1 addition & 1 deletion radiantcore/patch/PatchNode.cpp
Expand Up @@ -386,7 +386,7 @@ void PatchNode::setRenderSystem(const RenderSystemPtr& renderSystem)

if (renderSystem)
{
_ctrlPointShader = renderSystem->capture("$POINT");
_ctrlPointShader = renderSystem->capture(BuiltInShaderType::Point);
_ctrlLatticeShader = renderSystem->capture("$LATTICE");
}
else
Expand Down
24 changes: 24 additions & 0 deletions radiantcore/rendersystem/backend/BuiltInShader.cpp
Expand Up @@ -203,11 +203,35 @@ void BuiltInShader::construct()
break;
}

case BuiltInShaderType::Point:
{
constructPointShader(pass, 4, OpenGLState::SORT_POINT_FIRST);
break;
}

case BuiltInShaderType::BigPoint:
{
constructPointShader(pass, 6, OpenGLState::SORT_POINT_FIRST);
break;
}

default:
throw std::runtime_error("Cannot construct this shader: " + getName());
}
}

void BuiltInShader::constructPointShader(OpenGLState& pass, float pointSize, OpenGLState::SortPosition sort)
{
pass.setRenderFlag(RENDER_POINT_COLOUR);
pass.setRenderFlag(RENDER_DEPTHWRITE);

pass.setSortPosition(sort);
pass.m_pointsize = pointSize;

enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}

void BuiltInShader::constructWireframeSelectionOverlay(OpenGLState& pass, const std::string& schemeColourKey)
{
auto colorSelBrushes = GlobalColourSchemeManager().getColour(schemeColourKey);
Expand Down
1 change: 1 addition & 0 deletions radiantcore/rendersystem/backend/BuiltInShader.h
Expand Up @@ -18,6 +18,7 @@ class BuiltInShader :

protected:
void construct() override;
void constructPointShader(OpenGLState& pass, float pointSize, OpenGLState::SortPosition sort);
void constructWireframeSelectionOverlay(OpenGLState& pass, const std::string& schemeColourKey);
};

Expand Down
7 changes: 6 additions & 1 deletion radiantcore/rendersystem/backend/OpenGLShader.cpp
Expand Up @@ -858,6 +858,7 @@ void OpenGLShader::construct()
OpenGLState& state = appendDefaultPass();
state.setName(_name);

#if 0
if (_name == "$POINT")
{
state.setRenderFlag(RENDER_POINT_COLOUR);
Expand All @@ -869,7 +870,9 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
else if (_name == "$SELPOINT")
else
#endif
if (_name == "$SELPOINT")
{
state.setRenderFlag(RENDER_POINT_COLOUR);
state.setRenderFlag(RENDER_DEPTHWRITE);
Expand All @@ -880,6 +883,7 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
#if 0
else if (_name == "$BIGPOINT")
{
state.setRenderFlag(RENDER_POINT_COLOUR);
Expand All @@ -891,6 +895,7 @@ void OpenGLShader::construct()
enableViewType(RenderViewType::Camera);
enableViewType(RenderViewType::OrthoView);
}
#endif
else if (_name == "$PIVOT")
{
state.setRenderFlags(RENDER_DEPTHTEST | RENDER_DEPTHWRITE);
Expand Down
Expand Up @@ -87,7 +87,7 @@ void ModelScaleManipulator::onPreRender(const RenderSystemPtr& renderSystem, con

if (!_pointShader)
{
_pointShader = renderSystem->capture("$BIGPOINT");
_pointShader = renderSystem->capture(BuiltInShaderType::BigPoint);
}

_aabbs.clear();
Expand Down
2 changes: 1 addition & 1 deletion radiantcore/selection/manipulators/RotateManipulator.cpp
Expand Up @@ -103,7 +103,7 @@ void RotateManipulator::onPreRender(const RenderSystemPtr& renderSystem, const V

if (!_pivotPointShader)
{
_pivotPointShader = renderSystem->capture("$BIGPOINT");
_pivotPointShader = renderSystem->capture(BuiltInShaderType::BigPoint);
}

if (!_textRenderer)
Expand Down

0 comments on commit 37f1e10

Please sign in to comment.