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 d2a56f9 commit 8ed0bd9
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 8 deletions.
6 changes: 5 additions & 1 deletion include/irender.h
Expand Up @@ -590,7 +590,11 @@ enum class BuiltInShaderType
CameraMergeActionOverlayChange,
CameraMergeActionOverlayConflict,


// Coloured merge action highlights (ortho)
OrthoMergeActionOverlayAdd,
OrthoMergeActionOverlayRemove,
OrthoMergeActionOverlayChange,
OrthoMergeActionOverlayConflict,
};

/**
Expand Down
8 changes: 4 additions & 4 deletions radiant/xyview/XYWnd.cpp
Expand Up @@ -226,10 +226,10 @@ void XYWnd::captureStates()
{
_highlightShaders.selectedShader = GlobalRenderSystem().capture(BuiltInShaderType::WireframeSelectionOverlay);
_highlightShaders.selectedShaderGroup = GlobalRenderSystem().capture(BuiltInShaderType::WireframeSelectionOverlayOfGroups);
_highlightShaders.mergeActionShaderAdd = GlobalRenderSystem().capture("$XY_MERGE_ACTION_ADD");
_highlightShaders.mergeActionShaderChange = GlobalRenderSystem().capture("$XY_MERGE_ACTION_CHANGE");
_highlightShaders.mergeActionShaderRemove = GlobalRenderSystem().capture("$XY_MERGE_ACTION_REMOVE");
_highlightShaders.mergeActionShaderConflict = GlobalRenderSystem().capture("$XY_MERGE_ACTION_CONFLICT");
_highlightShaders.mergeActionShaderAdd = GlobalRenderSystem().capture(BuiltInShaderType::OrthoMergeActionOverlayAdd);
_highlightShaders.mergeActionShaderChange = GlobalRenderSystem().capture(BuiltInShaderType::OrthoMergeActionOverlayChange);
_highlightShaders.mergeActionShaderRemove = GlobalRenderSystem().capture(BuiltInShaderType::OrthoMergeActionOverlayRemove);
_highlightShaders.mergeActionShaderConflict = GlobalRenderSystem().capture(BuiltInShaderType::OrthoMergeActionOverlayConflict);
_highlightShaders.nonMergeActionNodeShader = GlobalRenderSystem().capture("$XY_INACTIVE_NODE");
}

Expand Down
37 changes: 36 additions & 1 deletion radiantcore/rendersystem/backend/BuiltInShader.cpp
Expand Up @@ -274,12 +274,47 @@ void BuiltInShader::construct()
break;
}

case BuiltInShaderType::OrthoMergeActionOverlayAdd:
{
// render additions over removals
constructOrthoMergeActionOverlay(pass, { 0, 0.5f, 0, 0.5f }, OpenGLState::SORT_OVERLAY_THIRD);
break;
}

case BuiltInShaderType::OrthoMergeActionOverlayRemove:
{
constructOrthoMergeActionOverlay(pass, { 0.6f, 0.1f, 0, 0.5f }, OpenGLState::SORT_OVERLAY_FIRST);
break;
}

case BuiltInShaderType::OrthoMergeActionOverlayChange:
{
constructOrthoMergeActionOverlay(pass, { 0, 0.4f, 0.9f, 0.5f }, OpenGLState::SORT_OVERLAY_SECOND);
break;
}

case BuiltInShaderType::OrthoMergeActionOverlayConflict:
{
constructOrthoMergeActionOverlay(pass, { 0.9f, 0.5f, 0.0f, 0.5f }, OpenGLState::SORT_OVERLAY_ONE_BEFORE_LAST);
break;
}

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

void BuiltInShader::constructCameraMergeActionOverlay(OpenGLState& pass, const Colour4& colour,
void BuiltInShader::constructOrthoMergeActionOverlay(OpenGLState& pass, const Colour4& colour,
OpenGLState::SortPosition sortPosition)
{
pass.setColour(colour);
pass.setSortPosition(OpenGLState::SORT_OVERLAY_FIRST);
pass.m_linewidth = 2;

enableViewType(RenderViewType::OrthoView);
}

void BuiltInShader::constructCameraMergeActionOverlay(OpenGLState& pass, const Colour4& colour,
OpenGLState::SortPosition sortPosition, OpenGLState::SortPosition lineSortPosition)
{
// This is a pass drawing a coloured overlay
Expand Down
2 changes: 2 additions & 0 deletions radiantcore/rendersystem/backend/BuiltInShader.h
Expand Up @@ -22,6 +22,8 @@ class BuiltInShader :
void constructWireframeSelectionOverlay(OpenGLState& pass, const std::string& schemeColourKey);
void constructCameraMergeActionOverlay(OpenGLState& pass, const Colour4& colour,
OpenGLState::SortPosition sortPosition, OpenGLState::SortPosition lineSortPosition);
void constructOrthoMergeActionOverlay(OpenGLState& pass, const Colour4& colour,
OpenGLState::SortPosition sortPosition);
};

}
8 changes: 6 additions & 2 deletions radiantcore/rendersystem/backend/OpenGLShader.cpp
Expand Up @@ -751,11 +751,12 @@ void OpenGLShader::constructFromMaterial(const MaterialPtr& material)

void OpenGLShader::construct()
{
#if 0
// Retrieve the highlight colour from the colourschemes (once)
const static Colour4 highLightColour(
GlobalColourSchemeManager().getColour("selected_brush_camera"), 0.3f
);

#endif
// Check the first character of the name to see if this is a special built-in
// shader
switch (_name[0])
Expand Down Expand Up @@ -1066,6 +1067,7 @@ void OpenGLShader::construct()
}
else
#endif
#if 0
if (string::starts_with(_name, "$XY_MERGE_ACTION_"))
{
Colour4 colour;
Expand Down Expand Up @@ -1099,7 +1101,9 @@ void OpenGLShader::construct()

enableViewType(RenderViewType::OrthoView);
}
else if (_name == "$XY_INACTIVE_NODE")
else
#endif
if (_name == "$XY_INACTIVE_NODE")
{
Colour4 colour(0, 0, 0, 0.05f);
state.setColour(static_cast<float>(colour[0]),
Expand Down

0 comments on commit 8ed0bd9

Please sign in to comment.