mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-24 22:09:10 -06:00
Increase precision in renderable plane projection.
This commit is contained in:
@@ -26,15 +26,13 @@ uniform float time;
|
||||
uniform sampler2D texture1;
|
||||
|
||||
in vec2 vs_st;
|
||||
in vec4 vs_position;
|
||||
in vec4 vs_positionScreenSpace;
|
||||
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
|
||||
Fragment getFragment()
|
||||
{
|
||||
vec4 position = vs_position;
|
||||
float depth = pscDepth(position);
|
||||
vec4 diffuse;
|
||||
if (gl_FrontFacing)
|
||||
diffuse = texture(texture1, vs_st);
|
||||
@@ -44,6 +42,7 @@ Fragment getFragment()
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = depth;
|
||||
frag.depth = vs_positionScreenSpace.w;
|
||||
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -24,26 +24,25 @@
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform mat4 ViewProjection;
|
||||
uniform mat4 ModelTransform;
|
||||
uniform mat4 modelViewProjectionTransform;
|
||||
|
||||
layout(location = 0) in vec4 in_position;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
|
||||
out vec2 vs_st;
|
||||
out vec4 vs_position;
|
||||
out vec4 vs_positionScreenSpace;
|
||||
out float s;
|
||||
|
||||
#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 tmp = in_position;
|
||||
vec4 position = pscTransform(tmp, ModelTransform);
|
||||
vec4 position = vec4(in_position.xyz * pow(10, in_position.w), 1);
|
||||
vec4 positionClipSpace = modelViewProjectionTransform * position;
|
||||
|
||||
vs_position = tmp;
|
||||
vs_st = in_st;
|
||||
|
||||
position = ViewProjection * position;
|
||||
gl_Position = z_normalization(position);
|
||||
// Write output
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
gl_Position = vs_positionScreenSpace;
|
||||
|
||||
vs_st = in_st;
|
||||
}
|
||||
@@ -549,10 +549,6 @@ void RenderableFov::render(const RenderData& data) {
|
||||
|
||||
_drawFOV = false;
|
||||
// setup the data to the shader
|
||||
//_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
//_programObject->setUniform("ModelTransform", glm::translate(glm::mat4(1), glm::vec3(data.positionVec3)) );
|
||||
//setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
// Model transform and view transform needs to be in double precision
|
||||
glm::dmat4 modelTransform =
|
||||
glm::translate(glm::dmat4(1.0), data.positionVec3) * // Translation
|
||||
|
||||
@@ -131,20 +131,18 @@ void RenderablePlaneProjection::render(const RenderData& data) {
|
||||
if (!_hasImage || (_moving && !active))
|
||||
return;
|
||||
|
||||
glm::mat4 transform = glm::mat4(1.0);
|
||||
|
||||
for (int i = 0; i < 3; i++){
|
||||
for (int j = 0; j < 3; j++){
|
||||
transform[i][j] = static_cast<float>(_stateMatrix[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
// Activate shader
|
||||
_shader->activate();
|
||||
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(*_shader.get(), data.camera, data.position);
|
||||
glm::dmat4 modelTransform =
|
||||
glm::translate(glm::dmat4(1.0), data.positionVec3) * // Translation
|
||||
glm::dmat4(_stateMatrix);
|
||||
glm::mat4 modelViewProjectionTransform =
|
||||
data.camera.projectionMatrix() *
|
||||
glm::mat4(data.camera.combinedViewMatrix() *
|
||||
modelTransform);
|
||||
|
||||
_shader->setUniform("modelViewProjectionTransform", modelViewProjectionTransform);
|
||||
|
||||
ghoul::opengl::TextureUnit unit;
|
||||
unit.activate();
|
||||
|
||||
Reference in New Issue
Block a user