performance: hey, raymarch can be started from the intersection

This commit is contained in:
FMS-Cat
2021-03-27 20:50:08 +09:00
parent f9b30bd80a
commit 99947c190c
2 changed files with 7 additions and 2 deletions

View File

@@ -2,6 +2,8 @@
layout (location = 0) in vec3 position; layout (location = 0) in vec3 position;
out vec4 vPosition;
uniform vec2 resolution; uniform vec2 resolution;
uniform mat4 projectionMatrix; uniform mat4 projectionMatrix;
uniform mat4 viewMatrix; uniform mat4 viewMatrix;
@@ -10,7 +12,8 @@ uniform mat4 modelMatrix;
// ------ // ------
void main() { void main() {
vec4 outPos = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 ); vPosition = modelMatrix * vec4( position, 1.0 );
vec4 outPos = projectionMatrix * viewMatrix * vPosition;
outPos.x *= resolution.y / resolution.x; outPos.x *= resolution.y / resolution.x;
gl_Position = outPos; gl_Position = outPos;

View File

@@ -21,6 +21,8 @@ const float TAU = PI * 2.0;
layout (location = 3) out vec4 fragWTF; layout (location = 3) out vec4 fragWTF;
#endif #endif
in vec4 vPosition;
#ifdef SHADOW #ifdef SHADOW
out vec4 fragColor; out vec4 fragColor;
#endif #endif
@@ -111,7 +113,7 @@ void main() {
vec3 rayOri = divideByW( inversePVM * vec4( p, 0.0, 1.0 ) ); vec3 rayOri = divideByW( inversePVM * vec4( p, 0.0, 1.0 ) );
vec3 farPos = divideByW( inversePVM * vec4( p, 1.0, 1.0 ) ); vec3 farPos = divideByW( inversePVM * vec4( p, 1.0, 1.0 ) );
vec3 rayDir = normalize( farPos - rayOri ); vec3 rayDir = normalize( farPos - rayOri );
float rayLen = cameraNearFar.x; float rayLen = length( vPosition.xyz - cameraPos );
vec3 rayPos = rayOri + rayDir * rayLen; vec3 rayPos = rayOri + rayDir * rayLen;
float dist; float dist;