mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-18 03:36:22 +02:00
Need to pull master, just updated all the deferred shaders to use scribe func declare blocks to avoid long shaders... didn;t validate the current clip to eye position evaluation
This commit is contained in:
parent
9f8d6a78cc
commit
dc8756e465
16 changed files with 149 additions and 32 deletions
|
@ -27,6 +27,7 @@ uniform sampler2D depthMap;
|
|||
|
||||
struct DeferredTransform {
|
||||
|
||||
mat4 projection;
|
||||
mat4 viewInverse;
|
||||
|
||||
// the distance to the near clip plane
|
||||
|
@ -54,12 +55,22 @@ float getStereoSide(DeferredTransform deferredTransform) {
|
|||
}
|
||||
|
||||
vec4 evalEyePositionFromZ(DeferredTransform deferredTransform, float depthVal, vec2 texcoord) {
|
||||
vec3 nPos = vec3(texcoord.xy * 2.0f - 1.0f, depthVal * 2.0f - 1.0f);
|
||||
|
||||
float Ze = -deferredTransform.projection[3][2] / (nPos.z + deferredTransform.projection[2][2]);
|
||||
float Xe = (nPos.x - Ze * deferredTransform.projection[2][0] - deferredTransform.projection[3][0]) / deferredTransform.projection[0][0];
|
||||
float Ye = (nPos.y - Ze * deferredTransform.projection[2][1] - deferredTransform.projection[3][1]) / deferredTransform.projection[1][1];
|
||||
|
||||
vec2 nearVal_depthScale = deferredTransform.nearVal_depthScale_stereoMode_spare0.xy;
|
||||
vec2 depthTexCoordOffset = deferredTransform.depthTexCoordOffset_scale.xy;
|
||||
vec2 depthTexCoordScale = deferredTransform.depthTexCoordOffset_scale.zw;
|
||||
|
||||
// compute the view space position using the depth
|
||||
float z = nearVal_depthScale.x / (depthVal * nearVal_depthScale.y - 1.0);
|
||||
if (texcoord.x > 0.0f) {
|
||||
z = Ze;
|
||||
return vec4(Xe, Ye, Ze, 1.0f);
|
||||
}
|
||||
return vec4((depthTexCoordOffset + texcoord * depthTexCoordScale) * z, z, 1.0);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
<@include DeferredLighting.slh@>
|
||||
|
||||
<@func declareSkyboxMap()@>
|
||||
|
||||
uniform samplerCube skyboxMap;
|
||||
|
||||
vec4 evalSkyboxLight(vec3 direction, float lod) {
|
||||
|
@ -22,6 +24,9 @@ vec4 evalSkyboxLight(vec3 direction, float lod) {
|
|||
return skytexel;
|
||||
}
|
||||
|
||||
<@endfunc@>
|
||||
|
||||
<@func declareSphericalHarmonics()@>
|
||||
struct SphericalHarmonics {
|
||||
vec4 L00;
|
||||
vec4 L1m1;
|
||||
|
@ -59,10 +64,12 @@ vec4 evalSphericalLight(SphericalHarmonics sh, vec3 direction ) {
|
|||
// Need one SH
|
||||
uniform SphericalHarmonics ambientSphere;
|
||||
|
||||
<@endfunc@>
|
||||
|
||||
// Everything about light
|
||||
<@include model/Light.slh@>
|
||||
|
||||
|
||||
<@func declareEvalAmbientGlobalColor()@>
|
||||
vec3 evalAmbienGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3 position, vec3 normal, vec3 diffuse, vec3 specular, float gloss) {
|
||||
|
||||
// Need the light now
|
||||
|
@ -80,6 +87,12 @@ vec3 evalAmbienGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3 positi
|
|||
|
||||
return color;
|
||||
}
|
||||
<@endfunc@>
|
||||
|
||||
<@func declareEvalAmbientSphereGlobalColor()@>
|
||||
|
||||
<$declareSphericalHarmonics()$>
|
||||
|
||||
vec3 evalAmbienSphereGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3 position, vec3 normal, vec3 diffuse, vec3 specular, float gloss) {
|
||||
// Need the light now
|
||||
Light light = getLight();
|
||||
|
@ -97,6 +110,12 @@ vec3 evalAmbienSphereGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3
|
|||
|
||||
return color;
|
||||
}
|
||||
<@endfunc@>
|
||||
|
||||
<@func declareEvalSkyboxGlobalColor()@>
|
||||
|
||||
<$declareSkyboxMap()$>
|
||||
<$declareSphericalHarmonics()$>
|
||||
|
||||
vec3 evalSkyboxGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3 position, vec3 normal, vec3 diffuse, vec3 specular, float gloss) {
|
||||
// Need the light now
|
||||
|
@ -114,7 +133,9 @@ vec3 evalSkyboxGlobalColor(mat4 invViewMat, float shadowAttenuation, vec3 positi
|
|||
|
||||
return color;
|
||||
}
|
||||
<@endfunc@>
|
||||
|
||||
<@func declareEvalLightmappedColor()@>
|
||||
vec3 evalLightmappedColor(mat4 invViewMat, float shadowAttenuation, vec3 normal, vec3 diffuse, vec3 lightmap) {
|
||||
|
||||
Light light = getLight();
|
||||
|
@ -139,5 +160,6 @@ vec3 evalLightmappedColor(mat4 invViewMat, float shadowAttenuation, vec3 normal,
|
|||
|
||||
return diffuse * (ambientLight + diffuseLight);
|
||||
}
|
||||
<@endfunc@>
|
||||
|
||||
<@endif@>
|
||||
|
|
|
@ -308,8 +308,10 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
float tMin = args->_viewport.y / (float)framebufferSize.height();
|
||||
float tHeight = args->_viewport.w / (float)framebufferSize.height();
|
||||
|
||||
bool useSkyboxCubemap = (_skybox) && (_skybox->getCubemap());
|
||||
auto monoViewport = args->_viewport;
|
||||
|
||||
|
||||
// The view furstum is the mono frustum base
|
||||
auto viewFrustum = args->_viewFrustum;
|
||||
|
||||
float left, right, bottom, top, nearVal, farVal;
|
||||
|
@ -322,19 +324,27 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
float depthTexCoordOffsetS = left * nearScale - sMin * depthTexCoordScaleS;
|
||||
float depthTexCoordOffsetT = bottom * nearScale - tMin * depthTexCoordScaleT;
|
||||
|
||||
// Eval the mono projection
|
||||
mat4 monoProjMat;
|
||||
viewFrustum->evalProjectionMatrix(monoProjMat);
|
||||
|
||||
// The mono view transform
|
||||
Transform monoViewTransform;
|
||||
viewFrustum->evalViewTransform(monoViewTransform);
|
||||
|
||||
// THe mono view matrix coming from the mono view transform
|
||||
glm::mat4 monoViewMat;
|
||||
monoViewTransform.getMatrix(monoViewMat);
|
||||
|
||||
bool isStereo = args->_context->isStereo();
|
||||
int numPasses = 1;
|
||||
|
||||
mat4 projMats[2];
|
||||
Transform viewTransforms[2];
|
||||
vec4 viewports[2];
|
||||
ivec4 viewports[2];
|
||||
vec4 clipQuad[2];
|
||||
vec2 screenBottomLeftCorners[2];
|
||||
vec2 screenTopRightCorners[2];
|
||||
vec4 fetchTexcoordRects[2];
|
||||
|
||||
DeferredTransform deferredTransforms[2];
|
||||
|
||||
|
@ -345,18 +355,25 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
args->_context->getStereoProjections(projMats);
|
||||
args->_context->getStereoViews(eyeViews);
|
||||
|
||||
glm::mat4 monoViewMat;
|
||||
monoViewTransform.getMatrix(monoViewMat);
|
||||
|
||||
|
||||
float halfWidth = 0.5 * sWidth;
|
||||
|
||||
for (int i = 0; i < numPasses; i++) {
|
||||
// In stereo, the 2 sides are layout side by side in the mono viewport and their width is half
|
||||
int sideWidth = monoViewport.z * 0.5;
|
||||
viewports[i] = ivec4(monoViewport.x + (i * sideWidth), monoViewport.y, sideWidth, monoViewport.w);
|
||||
|
||||
auto sideViewMat = eyeViews[i] * monoViewMat;
|
||||
|
||||
viewTransforms[i].evalFromRawMatrix(sideViewMat);
|
||||
|
||||
deferredTransforms[i]._viewInverse = sideViewMat;
|
||||
|
||||
projMats[i] = projMats[i] * eyeViews[i];
|
||||
|
||||
deferredTransforms[i]._projection = projMats[i];
|
||||
|
||||
deferredTransforms[i]._viewInverse = monoViewMat;
|
||||
|
||||
deferredTransforms[i].nearVal = nearVal;
|
||||
deferredTransforms[i].depthScale = depthScale;
|
||||
deferredTransforms[i].isStereo = (i == 0 ? -1.0f : 1.0f);
|
||||
|
@ -364,16 +381,22 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
deferredTransforms[i].depthTexCoordScale = glm::vec2(depthTexCoordScaleS, depthTexCoordScaleT);
|
||||
|
||||
|
||||
viewports[i] = glm::vec4(sMin + i * halfWidth, tMin, halfWidth, tHeight);
|
||||
clipQuad[i] = glm::vec4(sMin + i * halfWidth, tMin, halfWidth, tHeight);
|
||||
screenBottomLeftCorners[i] = glm::vec2(-1.0f + i * 1.0f, -1.0f);
|
||||
screenTopRightCorners[i] = glm::vec2(i * 1.0f, 1.0f);
|
||||
|
||||
fetchTexcoordRects[i] = glm::vec4(sMin + i * halfWidth, tMin, halfWidth, tHeight);
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
viewports[0] = monoViewport;
|
||||
|
||||
projMats[0] = monoProjMat;
|
||||
|
||||
viewTransforms[0] = monoViewTransform;
|
||||
deferredTransforms[0]._projection = monoProjMat;
|
||||
|
||||
viewTransforms[0].getMatrix(deferredTransforms[0]._viewInverse);
|
||||
deferredTransforms[0]._viewInverse = monoViewMat;
|
||||
|
||||
deferredTransforms[0].nearVal = nearVal;
|
||||
deferredTransforms[0].depthScale = depthScale;
|
||||
|
@ -382,9 +405,11 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
deferredTransforms[0].depthTexCoordScale = glm::vec2(depthTexCoordScaleS, depthTexCoordScaleT);
|
||||
|
||||
|
||||
viewports[0] = glm::vec4(sMin, tMin, sWidth, tHeight);
|
||||
clipQuad[0] = glm::vec4(sMin, tMin, sWidth, tHeight);
|
||||
screenBottomLeftCorners[0] = glm::vec2(-1.0f, -1.0f);
|
||||
screenTopRightCorners[0] = glm::vec2(1.0f, 1.0f);
|
||||
|
||||
fetchTexcoordRects[0] = glm::vec4(sMin, tMin, sWidth, tHeight);
|
||||
}
|
||||
|
||||
auto eyePoint = viewFrustum->getPosition();
|
||||
|
@ -392,22 +417,30 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
|
||||
|
||||
for (int side = 0; side < numPasses; side++) {
|
||||
// Render in this side's viewport
|
||||
batch.setViewportTransform(viewports[side]);
|
||||
batch.setStateScissorRect(viewports[side]);
|
||||
|
||||
// Sync and Bind the correct DeferredTransform ubo
|
||||
_deferredTransformBuffer[side]._buffer->setSubData(0, sizeof(DeferredTransform), (const gpu::Byte*) &deferredTransforms[side]);
|
||||
|
||||
batch.setUniformBuffer(_directionalLightLocations->deferredTransformBuffer, _deferredTransformBuffer[side]);
|
||||
|
||||
|
||||
/* glm::vec2 topLeft(-1.0f, -1.0f);
|
||||
|
||||
glm::vec2 topLeft(-1.0f, -1.0f);
|
||||
glm::vec2 bottomRight(1.0f, 1.0f);
|
||||
glm::vec2 texCoordTopLeft(sMin, tMin);
|
||||
/* glm::vec2 texCoordTopLeft(sMin, tMin);
|
||||
glm::vec2 texCoordBottomRight(sMin + sWidth, tMin + tHeight);*/
|
||||
glm::vec2 topLeft = screenBottomLeftCorners[side];
|
||||
glm::vec2 bottomRight = screenTopRightCorners[side];
|
||||
glm::vec2 texCoordTopLeft(viewports[side].x, viewports[side].y);
|
||||
glm::vec2 texCoordBottomRight(viewports[side].x + viewports[side].z, viewports[side].y + viewports[side].w);
|
||||
/* glm::vec2 topLeft = screenBottomLeftCorners[side];
|
||||
glm::vec2 bottomRight = screenTopRightCorners[side];*/
|
||||
glm::vec2 texCoordTopLeft(clipQuad[side].x, clipQuad[side].y);
|
||||
glm::vec2 texCoordBottomRight(clipQuad[side].x + clipQuad[side].z, clipQuad[side].y + clipQuad[side].w);
|
||||
|
||||
|
||||
|
||||
// First Global directional light and ambient pass
|
||||
bool useSkyboxCubemap = (_skybox) && (_skybox->getCubemap());
|
||||
|
||||
auto& program = _directionalLight;
|
||||
LightLocationsPtr locations = _directionalLightLocations;
|
||||
|
||||
|
@ -485,11 +518,13 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
}
|
||||
|
||||
{
|
||||
Transform model;
|
||||
/* Transform model;
|
||||
model.setTranslation(glm::vec3(sMin, tMin, 0.0));
|
||||
model.setScale(glm::vec3(sWidth, tHeight, 1.0));
|
||||
batch.setModelTransform(model);
|
||||
*/
|
||||
|
||||
batch.setModelTransform(Transform());
|
||||
batch.setProjectionTransform(glm::mat4());
|
||||
batch.setViewTransform(Transform());
|
||||
|
||||
|
@ -510,11 +545,11 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
batch.setResourceTexture(4, nullptr);
|
||||
}*/
|
||||
|
||||
glm::vec4 sCoefficients(sWidth / 2.0f, 0.0f, 0.0f, sMin + sWidth / 2.0f);
|
||||
glm::vec4 tCoefficients(0.0f, tHeight / 2.0f, 0.0f, tMin + tHeight / 2.0f);
|
||||
auto texcoordMat = glm::mat4();
|
||||
texcoordMat[0] = glm::vec4(sWidth / 2.0f, 0.0f, 0.0f, sMin + sWidth / 2.0f);
|
||||
/* texcoordMat[0] = glm::vec4(sWidth / 2.0f, 0.0f, 0.0f, sMin + sWidth / 2.0f);
|
||||
texcoordMat[1] = glm::vec4(0.0f, tHeight / 2.0f, 0.0f, tMin + tHeight / 2.0f);
|
||||
*/ texcoordMat[0] = glm::vec4(fetchTexcoordRects[side].z / 2.0f, 0.0f, 0.0f, fetchTexcoordRects[side].x + fetchTexcoordRects[side].z / 2.0f);
|
||||
texcoordMat[1] = glm::vec4(0.0f, fetchTexcoordRects[side].w / 2.0f, 0.0f, fetchTexcoordRects[side].y + fetchTexcoordRects[side].w / 2.0f);
|
||||
texcoordMat[2] = glm::vec4(0.0f, 0.0f, 1.0f, 0.0f);
|
||||
texcoordMat[3] = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
|
@ -524,7 +559,7 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
auto geometryCache = DependencyManager::get<GeometryCache>();
|
||||
|
||||
batch.setProjectionTransform(projMats[side]);
|
||||
batch.setViewTransform(viewTransforms[side]);
|
||||
batch.setViewTransform(monoViewTransform);
|
||||
|
||||
if (!_pointLights.empty()) {
|
||||
batch.setPipeline(_pointLight);
|
||||
|
@ -557,7 +592,7 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
DependencyManager::get<GeometryCache>()->renderQuad(batch, topLeft, bottomRight, texCoordTopLeft, texCoordBottomRight, color);
|
||||
|
||||
batch.setProjectionTransform(projMats[side]);
|
||||
batch.setViewTransform(viewTransforms[side]);
|
||||
batch.setViewTransform(monoViewTransform);
|
||||
} else {
|
||||
Transform model;
|
||||
model.setTranslation(glm::vec3(light->getPosition().x, light->getPosition().y, light->getPosition().z));
|
||||
|
@ -608,7 +643,7 @@ void DeferredLightingEffect::render(RenderArgs* args) {
|
|||
DependencyManager::get<GeometryCache>()->renderQuad(batch, topLeft, bottomRight, texCoordTopLeft, texCoordBottomRight, color);
|
||||
|
||||
batch.setProjectionTransform( projMats[side]);
|
||||
batch.setViewTransform(viewTransforms[side]);
|
||||
batch.setViewTransform(monoViewTransform);
|
||||
} else {
|
||||
coneParam.w = 1.0f;
|
||||
batch._glUniform4fv(_spotLightLocations->coneParam, 1, reinterpret_cast< const float* >(&coneParam));
|
||||
|
|
|
@ -157,6 +157,7 @@ private:
|
|||
class DeferredTransform {
|
||||
public:
|
||||
|
||||
glm::mat4 _projection;
|
||||
glm::mat4 _viewInverse;
|
||||
|
||||
float nearVal{ 1.0f };
|
||||
|
|
|
@ -111,7 +111,7 @@ float evalShadowAttenuation(vec4 shadowTexcoord) {
|
|||
return evalShadowAttenuationBasic(shadowTexcoord);
|
||||
}
|
||||
|
||||
|
||||
<!
|
||||
vec3 debugShadowMap(float shadowAttenuation, vec4 shadowTexcoord) {
|
||||
vec3 colorArray[4];
|
||||
colorArray[0].xyz = vec3(1.0, 1.0, 1.0);
|
||||
|
@ -128,5 +128,6 @@ vec3 debugShadowMap(float shadowAttenuation, vec4 shadowTexcoord) {
|
|||
return shadowAttenuation * colorArray[int(shadowTexcoord.w)];
|
||||
// return shadowAttenuation * vec3(2.0*(shadowTexcoord.xy - offsetArray[int(shadowTexcoord.w)]), 0);
|
||||
}
|
||||
!>
|
||||
|
||||
<@endif@>
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientSphereGlobalColor()$>
|
||||
|
||||
in vec2 _texCoord0;
|
||||
out vec4 _fragColor;
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientSphereGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
<@include DeferredBuffer.slh@>
|
||||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientSphereGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientGlobalColor()$>
|
||||
|
||||
in vec2 _texCoord0;
|
||||
out vec4 _fragColor;
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalAmbientGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
||||
|
|
|
@ -3,20 +3,23 @@
|
|||
// Generated on <$_SCRIBE_DATE$>
|
||||
//
|
||||
// directional_light.frag
|
||||
// fragment shader
|
||||
<!// fragment shader
|
||||
//
|
||||
// Created by Sam Gateau on 5/8/2015.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
//!>
|
||||
|
||||
// Everything about deferred buffer
|
||||
<@include DeferredBuffer.slh@>
|
||||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalSkyboxGlobalColor()$>
|
||||
|
||||
in vec2 _texCoord0;
|
||||
out vec4 _fragColor;
|
||||
|
||||
|
@ -47,4 +50,13 @@ void main(void) {
|
|||
|
||||
_fragColor = vec4(color, frag.normalVal.a);
|
||||
}
|
||||
|
||||
// Debug Stereo
|
||||
if (getStereoMode(deferredTransform)) {
|
||||
float side = getStereoSide(deferredTransform);
|
||||
// _fragColor = vec4(-side, 0.0, side, 1.0);
|
||||
//_fragColor = vec4(_texCoord0, 0.0, 1.0);
|
||||
// _fragColor = vec4(frag.position.xyz, 1.0);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalSkyboxGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
<@include DeferredGlobalLight.slh@>
|
||||
|
||||
<$declareEvalLightmappedColor()$>
|
||||
<$declareEvalSkyboxGlobalColor()$>
|
||||
|
||||
// Everything about shadow
|
||||
<@include Shadow.slh@>
|
||||
|
||||
|
|
|
@ -26,11 +26,13 @@ in vec4 _texCoord0;
|
|||
out vec4 _fragColor;
|
||||
|
||||
void main(void) {
|
||||
DeferredTransform deferredTransform = getDeferredTransform();
|
||||
|
||||
// Grab the fragment data from the uv
|
||||
vec2 texCoord = _texCoord0.st / _texCoord0.q;
|
||||
DeferredFragment frag = unpackDeferredFragment(texCoord);
|
||||
|
||||
mat4 invViewMat = getDeferredTransform().viewInverse;
|
||||
mat4 invViewMat = deferredTransform.viewInverse;
|
||||
|
||||
// Kill if in front of the light volume
|
||||
float depth = frag.depthVal;
|
||||
|
@ -75,4 +77,12 @@ void main(void) {
|
|||
_fragColor = vec4(edgeCoord * edgeCoord * getLightShowContour(light) * getLightColor(light), 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
// Debug Stereo
|
||||
if (getStereoMode(deferredTransform)) {
|
||||
float side = getStereoSide(deferredTransform);
|
||||
// _fragColor = vec4(-side, 0.0, side, 1.0);
|
||||
// _fragColor = vec4(texCoord, 0.0, 1.0);
|
||||
_fragColor = vec4(frag.position.xyz, 1.0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,10 +87,12 @@ void main(void) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Debug Stereo
|
||||
if (getStereoMode(deferredTransform)) {
|
||||
float side = getStereoSide(deferredTransform);
|
||||
_fragColor = vec4(-side, 0.0, side, 1.0);
|
||||
// _fragColor = vec4(-side, 0.0, side, 1.0);
|
||||
// _fragColor = vec4(texCoord, 0.0, 1.0);
|
||||
_fragColor = vec4(frag.position.xyz, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue