Lightclusters no unpack position from zdb

This commit is contained in:
Olivier Prat 2018-03-30 10:06:27 -04:00
parent 6f7a1eaefa
commit 02cf15d115
3 changed files with 10 additions and 4 deletions

View file

@ -118,7 +118,7 @@ DeferredFragment unpackDeferredFragmentNoPositionNoAmbient(vec2 texcoord) {
<@include DeferredTransform.slh@>
<$declareDeferredFrameTransform()$>
vec4 unpackDeferredPosition(DeferredFrameTransform deferredTransform, float depthValue, vec2 texcoord) {
vec4 unpackDeferredPosition(float depthValue, vec2 texcoord) {
int side = 0;
if (isStereo()) {
if (texcoord.x > 0.5) {
@ -131,6 +131,12 @@ vec4 unpackDeferredPosition(DeferredFrameTransform deferredTransform, float dept
return vec4(evalEyePositionFromZdb(side, depthValue, texcoord), 1.0);
}
// This method to unpack position is fastesst
vec4 unpackDeferredPositionFromZdb(vec2 texcoord) {
float Zdb = texture(depthMap, texcoord).x;
return unpackDeferredPosition(Zdb, texcoord);
}
vec4 unpackDeferredPositionFromZeye(vec2 texcoord) {
float Zeye = -texture(linearZeyeMap, texcoord).x;
int side = 0;
@ -151,7 +157,7 @@ DeferredFragment unpackDeferredFragment(DeferredFrameTransform deferredTransform
DeferredFragment frag = unpackDeferredFragmentNoPosition(texcoord);
frag.depthVal = depthValue;
frag.position = unpackDeferredPosition(deferredTransform, frag.depthVal, texcoord);
frag.position = unpackDeferredPosition(frag.depthVal, texcoord);
return frag;
}

View file

@ -32,7 +32,7 @@ void main(void) {
// Grab the fragment data from the uv
vec2 texCoord = varTexCoord0.st;
vec4 fragEyePos = unpackDeferredPositionFromZeye(texCoord);
vec4 fragEyePos = unpackDeferredPositionFromZdb(texCoord);
vec4 fragWorldPos = getViewInverse() * fragEyePos;
// From frag world pos find the cluster

View file

@ -29,7 +29,7 @@ void main(void) {
// Grab the fragment data from the uv
vec2 texCoord = varTexCoord0.st;
vec4 fragEyePos = unpackDeferredPositionFromZeye(texCoord);
vec4 fragEyePos = unpackDeferredPositionFromZdb(texCoord);
vec4 fragWorldPos = getViewInverse() * fragEyePos;
// From frag world pos find the cluster