From cae1654a196ee0ae6d2d26804dde9d1162b4d711 Mon Sep 17 00:00:00 2001 From: asl Date: Tue, 19 Jun 2018 11:55:17 +0300 Subject: [PATCH] 0024437: Efficient HLR visualization based on OpenGL and GLSL correction of HLR in perspective mode --- src/OpenGl/OpenGl_Context.cxx | 5 ++++- src/OpenGl/OpenGl_ShaderManager.cxx | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/OpenGl/OpenGl_Context.cxx b/src/OpenGl/OpenGl_Context.cxx index c9516eae3c..00f395befc 100644 --- a/src/OpenGl/OpenGl_Context.cxx +++ b/src/OpenGl/OpenGl_Context.cxx @@ -3456,7 +3456,10 @@ void OpenGl_Context::PushOrthoScale (const Handle(OpenGl_Workspace)& theWorkspac { if (!myActiveProgram.IsNull() && !theWorkspace.IsNull()) { - Standard_ShortReal aScale = (Standard_ShortReal)theWorkspace->View()->Camera()->Scale(); + Handle(Graphic3d_Camera) aCamera = theWorkspace->View()->Camera(); + Standard_ShortReal aScale = 0.0; + if( aCamera->IsOrthographic() ) + aScale = (Standard_ShortReal)aCamera->Scale(); myActiveProgram->SetUniform(this, myActiveProgram->GetStateLocation(OpenGl_OCCT_ORTHO_SCALE), aScale); } } diff --git a/src/OpenGl/OpenGl_ShaderManager.cxx b/src/OpenGl/OpenGl_ShaderManager.cxx index 5be378ae36..23da1a0344 100644 --- a/src/OpenGl/OpenGl_ShaderManager.cxx +++ b/src/OpenGl/OpenGl_ShaderManager.cxx @@ -1635,16 +1635,17 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramUnlit (Handle(OpenGl_Sha EOL" {" EOL" if (occIsSilhouettePass > 0.1)" EOL" {" - EOL" vec4 pos = occProjectionMatrix * occWorldViewMatrix * occModelWorldMatrix * vertex;" - EOL" delta = occNormal.xyz * aShift * pos.w;" + EOL" vec4 proj_vertex = occProjectionMatrix * occWorldViewMatrix * occModelWorldMatrix * vertex;" + EOL" delta = occNormal.xyz * aShift/2 * proj_vertex.w;" EOL" }" EOL" }" EOL" " EOL" vertex += vec4(delta, 0.0);" + EOL" vertex[3] = 1.0;" ; aSrcVertEndMain += - EOL"gl_Position += vec4(pdelta.xy, 0.0, 0.0);" + EOL"gl_Position += vec4(2*pdelta.xy, 0.0, 0.0);" ; aSrcFragExtraOut += -- 2.39.5