mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Adjust selection ring layering: visible through terrain, behind M2s
- Render selection circle before character/WMO/M2 passes\n- Disable depth test during selection pass so terrain does not occlude it\n- Keep model passes after selection so monsters/M2s render over the ring
This commit is contained in:
parent
f7372a282d
commit
017bdf9033
1 changed files with 4 additions and 6 deletions
|
|
@ -2582,8 +2582,6 @@ void Renderer::renderSelectionCircle(const glm::mat4& view, const glm::mat4& pro
|
|||
glDepthMask(GL_FALSE);
|
||||
GLboolean depthTestWasEnabled = glIsEnabled(GL_DEPTH_TEST);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||
glPolygonOffset(-2.0f, -2.0f);
|
||||
|
||||
glUseProgram(selCircleShader);
|
||||
glUniformMatrix4fv(glGetUniformLocation(selCircleShader, "uMVP"), 1, GL_FALSE, &mvp[0][0]);
|
||||
|
|
@ -2593,7 +2591,6 @@ void Renderer::renderSelectionCircle(const glm::mat4& view, const glm::mat4& pro
|
|||
glDrawArrays(GL_TRIANGLE_FAN, 0, selCircleVertCount);
|
||||
glBindVertexArray(0);
|
||||
|
||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||
if (depthTestWasEnabled) glEnable(GL_DEPTH_TEST);
|
||||
glDepthMask(GL_TRUE);
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
|
@ -2811,14 +2808,15 @@ void Renderer::renderWorld(game::World* world, game::GameHandler* gameHandler) {
|
|||
const glm::mat4& view = camera ? camera->getViewMatrix() : glm::mat4(1.0f);
|
||||
const glm::mat4& projection = camera ? camera->getProjectionMatrix() : glm::mat4(1.0f);
|
||||
|
||||
// Render selection circle before model passes: this keeps it visible through terrain
|
||||
// (depth test off in its pass), while characters/WMO/M2 still draw over it.
|
||||
renderSelectionCircle(view, projection);
|
||||
|
||||
// Render characters (after weather)
|
||||
if (characterRenderer && camera) {
|
||||
characterRenderer->render(*camera, view, projection);
|
||||
}
|
||||
|
||||
// Render selection circle under targeted creature
|
||||
renderSelectionCircle(view, projection);
|
||||
|
||||
// Render WMO buildings (after characters, before UI)
|
||||
if (wmoRenderer && camera) {
|
||||
auto wmoStart = std::chrono::steady_clock::now();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue