Work in progress for shader updates (not working)
parent
d820dc2e6c
commit
95abeff523
|
|
@ -1402,8 +1402,7 @@ void LLShaderMgr::initAttribsAndUniforms()
|
|||
mReservedUniforms.push_back("translationPalette");
|
||||
|
||||
// <FS:CR> Import Vignette from Exodus
|
||||
mReservedUniforms.push_back("exo_vignette");
|
||||
mReservedUniforms.push_back("exo_screen");
|
||||
mReservedUniforms.push_back("vignette");
|
||||
// </FS:CR> Import Vignette from Exodus
|
||||
|
||||
mReservedUniforms.push_back("screenTex");
|
||||
|
|
|
|||
|
|
@ -217,8 +217,7 @@ public:
|
|||
AVATAR_TRANSLATION, // "translationPalette"
|
||||
|
||||
// <FS:CR> Import Vignette from Exodus
|
||||
EXO_RENDER_VIGNETTE, // "exo_vignette"
|
||||
EXO_RENDER_SCREEN, // "exo_screen"
|
||||
RENDER_VIGNETTE, // "vignette"
|
||||
// </FS:CR> Import Vignette from Exodus
|
||||
|
||||
WATER_SCREENTEX, // "screenTex"
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ set(viewer_SOURCE_FILES
|
|||
exoflickr.cpp
|
||||
exoflickrauth.cpp
|
||||
exogroupmutelist.cpp
|
||||
exopostprocess.cpp
|
||||
# exopostprocess.cpp
|
||||
floatermedialists.cpp
|
||||
fsareasearch.cpp
|
||||
fsareasearchmenu.cpp
|
||||
|
|
@ -885,7 +885,7 @@ set(viewer_HEADER_FILES
|
|||
exoflickr.h
|
||||
exoflickrauth.h
|
||||
exogroupmutelist.h
|
||||
exopostprocess.h
|
||||
# exopostprocess.h
|
||||
floatermedialists.h
|
||||
fsareasearch.h
|
||||
fsareasearchmenu.h
|
||||
|
|
|
|||
|
|
@ -9,17 +9,18 @@
|
|||
|
||||
out vec4 frag_color;
|
||||
|
||||
uniform sampler2D exo_screen;
|
||||
uniform sampler2D diffuseRect;
|
||||
uniform vec2 screen_res;
|
||||
uniform vec3 exo_vignette;
|
||||
uniform vec3 vignette;
|
||||
in vec2 vary_fragcoord;
|
||||
|
||||
|
||||
void main ()
|
||||
{
|
||||
vec4 diff = texture(exo_screen, vary_fragcoord.xy);
|
||||
vec2 tc = vary_fragcoord / screen_res - 0.5f;
|
||||
float vignette = 1 - dot(tc, tc);
|
||||
diff.rgb *= clamp(pow(mix(1, vignette * vignette * vignette * vignette * exo_vignette.z, exo_vignette.x), exo_vignette.y), 0, 1);
|
||||
frag_color = diff;
|
||||
// vec4 diff = texture(screen, vary_fragcoord.xy);
|
||||
// vec2 tc = vary_fragcoord / screen_res - 0.5f;
|
||||
// float vignette_val = 1 - dot(tc, tc);
|
||||
// diff.rgb *= clamp(pow(mix(1, vignette_val * vignette_val * vignette_val * vignette_val * vignette.z, vignette.x), vignette.y), 0, 1);
|
||||
// frag_color = diff;
|
||||
frag_color = vec4(0.0, 1.0, 0.0, 0.5);
|
||||
}
|
||||
|
|
@ -888,7 +888,7 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
|
|||
// <FS:CR> Import Vignette from Exodus
|
||||
if (success)
|
||||
{
|
||||
gPostVignetteProgram.mName = "Exodus Vignette Post";
|
||||
gPostVignetteProgram.mName = "Vignette Post";
|
||||
gPostVignetteProgram.mShaderFiles.clear();
|
||||
gPostVignetteProgram.mShaderFiles.push_back(make_pair("post/exoPostBaseV.glsl", GL_VERTEX_SHADER));
|
||||
gPostVignetteProgram.mShaderFiles.push_back(make_pair("post/exoVignetteF.glsl", GL_FRAGMENT_SHADER));
|
||||
|
|
|
|||
|
|
@ -242,7 +242,6 @@
|
|||
#endif
|
||||
|
||||
#include "utilitybar.h" // <FS:Zi> Support for the classic V1 style buttons in some skins
|
||||
#include "exopostprocess.h" // <FS:Ansariel> Exodus Vignette
|
||||
#include "llnetmap.h"
|
||||
#include "lggcontactsets.h"
|
||||
#include "fspanellogin.h"
|
||||
|
|
@ -2070,7 +2069,6 @@ LLViewerWindow::LLViewerWindow(const Params& p)
|
|||
LL_INFOS("RenderInit") << "LLVertexBuffer initialization done." << LL_ENDL ;
|
||||
gGL.init(true);
|
||||
// <FS:Ansariel> Exodus vignette
|
||||
exoPostProcess::getInstance(); // Make sure we've created one of these
|
||||
|
||||
if (LLFeatureManager::getInstance()->isSafe()
|
||||
|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
|
||||
|
|
@ -2688,11 +2686,6 @@ void LLViewerWindow::shutdownGL()
|
|||
|
||||
gGL.shutdown();
|
||||
|
||||
// <FS:Ansariel> Exodus vignette
|
||||
// This must die before LLVertexBuffer does
|
||||
exoPostProcess::deleteSingleton();
|
||||
// </FS:Ansariel> Exodus vignette
|
||||
|
||||
SUBSYSTEM_CLEANUP(LLVertexBuffer);
|
||||
|
||||
LL_INFOS() << "LLVertexBuffer cleaned." << LL_ENDL ;
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@
|
|||
#include "rlvactions.h"
|
||||
#include "rlvlocks.h"
|
||||
// [/RLVa:KB]
|
||||
#include "exopostprocess.h" // <FS:CR> Import Vignette from Exodus
|
||||
|
||||
#include "llenvironment.h"
|
||||
|
||||
|
|
@ -204,6 +203,7 @@ F32 LLPipeline::RenderShadowFOVCutoff;
|
|||
bool LLPipeline::CameraOffset;
|
||||
F32 LLPipeline::CameraMaxCoF;
|
||||
F32 LLPipeline::CameraDoFResScale;
|
||||
LLVector3 LLPipeline::RenderVignette;
|
||||
F32 LLPipeline::RenderAutoHideSurfaceAreaLimit;
|
||||
bool LLPipeline::RenderScreenSpaceReflections;
|
||||
S32 LLPipeline::RenderScreenSpaceReflectionIterations;
|
||||
|
|
@ -1132,7 +1132,7 @@ void LLPipeline::refreshCachedSettings()
|
|||
CameraOffset = gSavedSettings.getBOOL("CameraOffset");
|
||||
CameraMaxCoF = gSavedSettings.getF32("CameraMaxCoF");
|
||||
CameraDoFResScale = gSavedSettings.getF32("CameraDoFResScale");
|
||||
exoPostProcess::instance().ExodusRenderPostSettingsUpdate(); // <FS:CR> Import Vignette from Exodus
|
||||
RenderVignette = gSavedSettings.getVector3("FSRenderVignette"); // <FS:Beq/> redo the vignette
|
||||
|
||||
RenderAutoHideSurfaceAreaLimit = gSavedSettings.getF32("RenderAutoHideSurfaceAreaLimit");
|
||||
RenderScreenSpaceReflections = gSavedSettings.getBOOL("RenderScreenSpaceReflections");
|
||||
|
|
@ -1146,8 +1146,6 @@ void LLPipeline::refreshCachedSettings()
|
|||
sReflectionProbesEnabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionsEnabled") && gSavedSettings.getBOOL("RenderReflectionsEnabled");
|
||||
RenderSpotLight = nullptr;
|
||||
|
||||
exoPostProcess::instance().ExodusRenderPostUpdate(); // <FS:CR> Import Vignette from Exodus
|
||||
|
||||
if (gNonInteractive)
|
||||
{
|
||||
LLVOAvatar::sMaxNonImpostors = 1;
|
||||
|
|
@ -1253,7 +1251,6 @@ void LLPipeline::createGLBuffers()
|
|||
stop_glerror();
|
||||
assertInitialized();
|
||||
|
||||
exoPostProcess::instance().ExodusRenderPostUpdate(); // <FS:CR> Import Vignette from Exodus
|
||||
// Use FBO for bake tex
|
||||
// <FS:Ansariel> Allow higher resolution rendering in mesh render preview
|
||||
//mBake.allocate(512, 512, GL_RGBA, true); // SL-12781 Build > Upload > Model; 3D Preview
|
||||
|
|
@ -7233,6 +7230,51 @@ void LLPipeline::combineGlow(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
dst->flush();
|
||||
}
|
||||
|
||||
// <FS:Beq> updated Vignette code (based on original Exo Vignette)
|
||||
void LLPipeline::renderVignette(LLRenderTarget* src, LLRenderTarget* dst)
|
||||
{
|
||||
if (RenderVignette.mV[0] > 0.f)
|
||||
{
|
||||
LL_PROFILE_GPU_ZONE("Vignette");
|
||||
dst->bindTarget();
|
||||
LLGLSLShader *shader = &gPostVignetteProgram;
|
||||
|
||||
// bind the progam and output to screentriangle VBO
|
||||
shader->bind();
|
||||
|
||||
S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage());
|
||||
if (channel > -1)
|
||||
{
|
||||
src->bindTexture(0, channel, LLTexUnit::TFO_POINT);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_ERRS("vignette") << "Failed to bind diffuse texture" << LL_ENDL;
|
||||
}
|
||||
|
||||
shader->uniform2f(
|
||||
LLShaderMgr::DEFERRED_SCREEN_RES,
|
||||
dst->getWidth(),
|
||||
dst->getHeight() );
|
||||
shader->uniform3fv(
|
||||
LLShaderMgr::RENDER_VIGNETTE,
|
||||
1,
|
||||
RenderVignette.mV);
|
||||
|
||||
mScreenTriangleVB->setBuffer();
|
||||
mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3);
|
||||
stop_glerror();
|
||||
|
||||
shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage());
|
||||
shader->unbind();
|
||||
dst->flush();
|
||||
}
|
||||
else
|
||||
{
|
||||
copyRenderTarget(src, dst);
|
||||
}
|
||||
}
|
||||
// </FS:Beq>
|
||||
void LLPipeline::renderDoF(LLRenderTarget* src, LLRenderTarget* dst)
|
||||
{
|
||||
{
|
||||
|
|
@ -7472,7 +7514,7 @@ void LLPipeline::renderFinalize()
|
|||
gGL.setColorMask(true, true);
|
||||
glClearColor(0, 0, 0, 0);
|
||||
|
||||
|
||||
|
||||
copyScreenSpaceReflections(&mRT->screen, &mSceneMap);
|
||||
|
||||
generateLuminance(&mRT->screen, &mLuminanceMap);
|
||||
|
|
@ -7494,8 +7536,12 @@ void LLPipeline::renderFinalize()
|
|||
glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
|
||||
|
||||
renderDoF(&mRT->screen, &mPostMap);
|
||||
|
||||
applyFXAA(&mPostMap, &mRT->screen);
|
||||
// <FS:Beq> Restore shader post proc for Vignette
|
||||
// LLRenderTarget* finalBuffer = &mRT->screen;
|
||||
renderVignette(&mRT->screen, &mPostMap); // <FS:Beq/> Restore shader post proc.
|
||||
copyRenderTarget(&mPostMap, &mRT->screen);
|
||||
// </FS:Beq>
|
||||
LLRenderTarget* finalBuffer = &mRT->screen;
|
||||
if (RenderBufferVisualization > -1)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ public:
|
|||
|
||||
void renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera& camera, LLCullResult& result, bool depth_clamp);
|
||||
void renderHighlights();
|
||||
void renderVignette(LLRenderTarget* src, LLRenderTarget* dst);
|
||||
void renderDebug();
|
||||
void renderPhysicsDisplay();
|
||||
|
||||
|
|
@ -1053,6 +1054,7 @@ public:
|
|||
static bool CameraOffset;
|
||||
static F32 CameraMaxCoF;
|
||||
static F32 CameraDoFResScale;
|
||||
static LLVector3 RenderVignette; // <FS:Beq/> refresh of vignette support
|
||||
static F32 RenderAutoHideSurfaceAreaLimit;
|
||||
static bool RenderScreenSpaceReflections;
|
||||
static S32 RenderScreenSpaceReflectionIterations;
|
||||
|
|
|
|||
Loading…
Reference in New Issue