Skip to content
Snippets Groups Projects
Commit 3576d8e8 authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Clean and add version checks to LPM and CAS paths

parent b450c18a
No related branches found
No related tags found
No related merge requests found
...@@ -246,15 +246,15 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader) ...@@ -246,15 +246,15 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
return FALSE; return FALSE;
} }
} }
#if !LL_DARWIN
if (features->hasLPM) if (features->hasLPM && gGLManager.mGLVersion >= 4.19f)
{ {
if (!shader->attachFragmentObject("alchemy/LPMUtil.glsl")) if (!shader->attachFragmentObject("alchemy/LPMUtil.glsl"))
{ {
return FALSE; return FALSE;
} }
} }
#endif
if (features->hasGamma || features->isDeferred) if (features->hasGamma || features->isDeferred)
{ {
if (!shader->attachFragmentObject("windlight/gammaF.glsl")) if (!shader->attachFragmentObject("windlight/gammaF.glsl"))
......
...@@ -43,17 +43,14 @@ ...@@ -43,17 +43,14 @@
#include "llviewershadermgr.h" #include "llviewershadermgr.h"
#include "pipeline.h" #include "pipeline.h"
#if !LL_DARWIN
uint32_t LPM_CONTROL_BLOCK[24 * 4] = {}; // Upload this to a uint4[24] part of a constant buffer (for example 'constant.lpm[24]').
#ifndef LL_WINDOWS #ifndef LL_WINDOWS
#define A_GCC 1 #define A_GCC 1
#endif #endif
#define A_CPU 1 #define A_CPU 1
uint32_t LPM_CONTROL_BLOCK[24 * 4] = {}; // Upload this to a uint4[24] part of a constant buffer (for example 'constant.lpm[24]').
#include "app_settings/shaders/class1/alchemy/LPMUtil.glsl" #include "app_settings/shaders/class1/alchemy/LPMUtil.glsl"
#include "app_settings/shaders/class1/alchemy/CASF.glsl" #include "app_settings/shaders/class1/alchemy/CASF.glsl"
#endif
const U32 ALRENDER_BUFFER_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1; const U32 ALRENDER_BUFFER_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
...@@ -338,47 +335,86 @@ void ALRenderUtil::refreshState() ...@@ -338,47 +335,86 @@ void ALRenderUtil::refreshState()
bool ALRenderUtil::setupTonemap() bool ALRenderUtil::setupTonemap()
{ {
if (LLPipeline::sRenderDeferred) mTonemapType = gSavedSettings.getU32("RenderToneMapType");
if (mTonemapType >= TONEMAP_COUNT || (mTonemapType == ALTonemap::TONEMAP_AMD && gGLManager.mGLVersion < 4.20f))
{ {
mTonemapType = gSavedSettings.getU32("RenderToneMapType"); mTonemapType = ALTonemap::TONEMAP_ACES_HILL;
if (mTonemapType >= TONEMAP_COUNT) }
{
mTonemapType = ALTonemap::TONEMAP_ACES_HILL;
}
mTonemapExposure = llclamp(gSavedSettings.getF32("RenderExposure"), 0.5f, 4.f); LLGLSLShader* tone_shader = nullptr;
switch (mTonemapType)
mToneUchimuraParamA = LLVector3(gSavedSettings.getF32("AlchemyToneMapUchimuraMaxBrightness"), gSavedSettings.getF32("AlchemyToneMapUchimuraContrast"), gSavedSettings.getF32("AlchemyToneMapUchimuraLinearStart")); {
mToneUchimuraParamB = LLVector3(gSavedSettings.getF32("AlchemyToneMapUchimuraLinearLength"), gSavedSettings.getF32("AlchemyToneMapUchimuraBlackLevel"), 0.0); default:
mToneUnchartedParamA = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicToeStr"), gSavedSettings.getF32("AlchemyToneMapFilmicToeLen"), gSavedSettings.getF32("AlchemyToneMapFilmicShoulderStr")); case ALTonemap::TONEMAP_ACES_HILL:
mToneUnchartedParamB = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicShoulderLen"), gSavedSettings.getF32("AlchemyToneMapFilmicShoulderAngle"), gSavedSettings.getF32("AlchemyToneMapFilmicGamma")); {
mToneUnchartedParamC = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicWhitePoint"), 2.0, 0.0); tone_shader = &gDeferredPostTonemapACESProgram;
break;
#if !LL_DARWIN }
static LLCachedControl<F32> amd_hdrmax(gSavedSettings, "AlchemyToneMapAMDHDRMax", 256.f); case ALTonemap::TONEMAP_UCHIMURA:
static LLCachedControl<F32> amd_exposure(gSavedSettings, "AlchemyToneMapAMDExposure", 8.0f); {
static LLCachedControl<F32> amd_contrast(gSavedSettings, "AlchemyToneMapAMDContrast", 0.25f); tone_shader = &gDeferredPostTonemapUchiProgram;
static LLCachedControl<F32> amd_satr(gSavedSettings, "AlchemyToneMapAMDSaturationR", 0.f); break;
static LLCachedControl<F32> amd_satg(gSavedSettings, "AlchemyToneMapAMDSaturationG", 0.f); }
static LLCachedControl<F32> amd_satb(gSavedSettings, "AlchemyToneMapAMDSaturationB", 0.f); case ALTonemap::TONEMAP_AMD:
static LLCachedControl<F32> amd_crossr(gSavedSettings, "AlchemyToneMapAMDCrosstalkR", 1.0 / 2.0); {
static LLCachedControl<F32> amd_crossg(gSavedSettings, "AlchemyToneMapAMDCrosstalkG", 1.f); tone_shader = &gDeferredPostTonemapLPMProgram;
static LLCachedControl<F32> amd_crossb(gSavedSettings, "AlchemyToneMapAMDCrosstalkB", 1.0 / 32.0); break;
static LLCachedControl<bool> amd_sh_contrast(gSavedSettings, "AlchemyToneMapAMDShoulderContrast", false); }
static LLCachedControl<F32> amd_sh_contrast_range(gSavedSettings, "AlchemyToneMapAMDShoulderContrastRange", 1.0); case ALTonemap::TONEMAP_UNCHARTED:
{
varAF3(saturation) = initAF3(amd_satr, amd_satg, amd_satb); tone_shader = &gDeferredPostTonemapHableProgram;
varAF3(crosstalk) = initAF3(amd_crossr, amd_crossg, amd_crossb); break;
}
}
tone_shader->bind();
F32 tone_exposure = llclamp(gSavedSettings.getF32("RenderExposure"), 0.5f, 4.f);
tone_shader->uniform1f(al_exposure, tone_exposure);
switch (mTonemapType)
{
default:
break;
case ALTonemap::TONEMAP_UCHIMURA:
{
auto uchi_1 = LLVector3(gSavedSettings.getF32("AlchemyToneMapUchimuraMaxBrightness"), gSavedSettings.getF32("AlchemyToneMapUchimuraContrast"), gSavedSettings.getF32("AlchemyToneMapUchimuraLinearStart"));
auto uchi_2 = LLVector3(gSavedSettings.getF32("AlchemyToneMapUchimuraLinearLength"), gSavedSettings.getF32("AlchemyToneMapUchimuraBlackLevel"), 0.0);
tone_shader->uniform3fv(tone_uchimura_a, 1, uchi_1.mV);
tone_shader->uniform3fv(tone_uchimura_b, 1, uchi_2.mV);
break;
}
case ALTonemap::TONEMAP_AMD:
{
const F32 sh_contrast_range = gSavedSettings.getF32("AlchemyToneMapAMDShoulderContrastRange");
varAF3(saturation) = initAF3(gSavedSettings.getF32("AlchemyToneMapAMDSaturationR"), gSavedSettings.getF32("AlchemyToneMapAMDSaturationG"), gSavedSettings.getF32("AlchemyToneMapAMDSaturationB"));
varAF3(crosstalk) = initAF3(gSavedSettings.getF32("AlchemyToneMapAMDCrosstalkR"), gSavedSettings.getF32("AlchemyToneMapAMDCrosstalkG"), gSavedSettings.getF32("AlchemyToneMapAMDCrosstalkB"));
LpmSetup( LpmSetup(
amd_sh_contrast, LPM_CONFIG_709_709, LPM_COLORS_709_709, // <-- Using the LPM_ prefabs to make inputs easier. sh_contrast_range != 1.0, LPM_CONFIG_709_709, LPM_COLORS_709_709, // <-- Using the LPM_ prefabs to make inputs easier.
0.0, // softGap 0.0, // softGap
amd_hdrmax, // hdrMax gSavedSettings.getF32("AlchemyToneMapAMDHDRMax"), // hdrMax
amd_exposure, // exposure gSavedSettings.getF32("AlchemyToneMapAMDExposure"), // exposure
amd_contrast, // contrast gSavedSettings.getF32("AlchemyToneMapAMDContrast"), // contrast
amd_sh_contrast ? amd_sh_contrast_range : 1.0, // shoulder contrast sh_contrast_range, // shoulder contrast
saturation, crosstalk); saturation, crosstalk);
#endif
tone_shader->uniform4uiv(tonemap_amd_params, 24, LPM_CONTROL_BLOCK);
tone_shader->uniform1i(tonemap_amd_params_shoulder, sh_contrast_range != 1.0);
break;
} }
case ALTonemap::TONEMAP_UNCHARTED:
{
auto uncharted_params_1 = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicToeStr"), gSavedSettings.getF32("AlchemyToneMapFilmicToeLen"), gSavedSettings.getF32("AlchemyToneMapFilmicShoulderStr"));
auto uncharted_params_2 = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicShoulderLen"), gSavedSettings.getF32("AlchemyToneMapFilmicShoulderAngle"), gSavedSettings.getF32("AlchemyToneMapFilmicGamma"));
auto uncharted_params_3 = LLVector3(gSavedSettings.getF32("AlchemyToneMapFilmicWhitePoint"), 2.0, 0.0);
tone_shader->uniform3fv(tone_uncharted_a, 1, uncharted_params_1.mV);
tone_shader->uniform3fv(tone_uncharted_b, 1, uncharted_params_2.mV);
tone_shader->uniform3fv(tone_uncharted_c, 1, uncharted_params_3.mV);
break;
}
}
tone_shader->unbind();
return true; return true;
} }
...@@ -407,13 +443,11 @@ void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure, ...@@ -407,13 +443,11 @@ void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure,
tone_shader = &gDeferredPostTonemapUchiProgram; tone_shader = &gDeferredPostTonemapUchiProgram;
break; break;
} }
#if !LL_DARWIN
case ALTonemap::TONEMAP_AMD: case ALTonemap::TONEMAP_AMD:
{ {
tone_shader = &gDeferredPostTonemapLPMProgram; tone_shader = &gDeferredPostTonemapLPMProgram;
break; break;
} }
#endif
case ALTonemap::TONEMAP_UNCHARTED: case ALTonemap::TONEMAP_UNCHARTED:
{ {
tone_shader = &gDeferredPostTonemapHableProgram; tone_shader = &gDeferredPostTonemapHableProgram;
...@@ -428,35 +462,6 @@ void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure, ...@@ -428,35 +462,6 @@ void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure,
tone_shader->bindTexture(LLShaderMgr::EXPOSURE_MAP, exposure, false, LLTexUnit::TFO_BILINEAR); tone_shader->bindTexture(LLShaderMgr::EXPOSURE_MAP, exposure, false, LLTexUnit::TFO_BILINEAR);
tone_shader->uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, src->getWidth(), src->getHeight()); tone_shader->uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, src->getWidth(), src->getHeight());
tone_shader->uniform1f(al_exposure, mTonemapExposure);
switch (mTonemapType)
{
default:
break;
case ALTonemap::TONEMAP_UCHIMURA:
{
tone_shader->uniform3fv(tone_uchimura_a, 1, mToneUchimuraParamA.mV);
tone_shader->uniform3fv(tone_uchimura_b, 1, mToneUchimuraParamB.mV);
break;
}
#if !LL_DARWIN
case ALTonemap::TONEMAP_AMD:
{
static LLCachedControl<bool> amd_sh_contrast(gSavedSettings, "AlchemyToneMapAMDShoulderContrast", false);
tone_shader->uniform4uiv(tonemap_amd_params, 24, LPM_CONTROL_BLOCK);
tone_shader->uniform1i(tonemap_amd_params_shoulder, amd_sh_contrast);
break;
}
#endif
case ALTonemap::TONEMAP_UNCHARTED:
{
tone_shader->uniform3fv(tone_uncharted_a, 1, mToneUnchartedParamA.mV);
tone_shader->uniform3fv(tone_uncharted_b, 1, mToneUnchartedParamB.mV);
tone_shader->uniform3fv(tone_uncharted_c, 1, mToneUnchartedParamC.mV);
break;
}
}
mRenderBuffer->setBuffer(); mRenderBuffer->setBuffer();
mRenderBuffer->drawArrays(LLRender::TRIANGLES, 0, 3); mRenderBuffer->drawArrays(LLRender::TRIANGLES, 0, 3);
...@@ -715,7 +720,7 @@ bool ALRenderUtil::setupSharpen() ...@@ -715,7 +720,7 @@ bool ALRenderUtil::setupSharpen()
if (LLPipeline::sRenderDeferred) if (LLPipeline::sRenderDeferred)
{ {
mSharpenMethod = gSavedSettings.getU32("RenderSharpenMethod"); mSharpenMethod = gSavedSettings.getU32("RenderSharpenMethod");
if (mSharpenMethod >= SHARPEN_COUNT) if (mSharpenMethod >= SHARPEN_COUNT || (mSharpenMethod == ALSharpen::SHARPEN_CAS && gGLManager.mGLVersion < 4.2f))
{ {
mSharpenMethod = ALSharpen::SHARPEN_NONE; mSharpenMethod = ALSharpen::SHARPEN_NONE;
} }
...@@ -756,13 +761,11 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst) ...@@ -756,13 +761,11 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst)
LLGLSLShader* sharpen_shader = nullptr; LLGLSLShader* sharpen_shader = nullptr;
switch (mSharpenMethod) switch (mSharpenMethod)
{ {
#if !LL_DARWIN
case ALSharpen::SHARPEN_CAS: case ALSharpen::SHARPEN_CAS:
{ {
sharpen_shader = &gDeferredPostCASProgram; sharpen_shader = &gDeferredPostCASProgram;
break; break;
} }
#endif
case ALSharpen::SHARPEN_DLS: case ALSharpen::SHARPEN_DLS:
{ {
sharpen_shader = &gDeferredPostDLSProgram; sharpen_shader = &gDeferredPostDLSProgram;
...@@ -780,7 +783,7 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst) ...@@ -780,7 +783,7 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst)
dst->bindTarget(); dst->bindTarget();
sharpen_shader->bind(); sharpen_shader->bind();
#if !LL_DARWIN
if (mSharpenMethod == ALSharpen::SHARPEN_CAS) if (mSharpenMethod == ALSharpen::SHARPEN_CAS)
{ {
static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderSharpenCASSharpness", 0.6f); static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderSharpenCASSharpness", 0.6f);
...@@ -800,7 +803,6 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst) ...@@ -800,7 +803,6 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst)
sharpen_shader->uniform2f(out_screen_res, dst->getWidth(), dst->getHeight()); sharpen_shader->uniform2f(out_screen_res, dst->getWidth(), dst->getHeight());
} }
#endif
sharpen_shader->bindTexture(LLShaderMgr::DEFERRED_DIFFUSE, src, false, LLTexUnit::TFO_POINT); sharpen_shader->bindTexture(LLShaderMgr::DEFERRED_DIFFUSE, src, false, LLTexUnit::TFO_POINT);
......
...@@ -78,17 +78,8 @@ class ALRenderUtil ...@@ -78,17 +78,8 @@ class ALRenderUtil
U32 getSharpenMethod() { return mSharpenMethod; }; U32 getSharpenMethod() { return mSharpenMethod; };
private: private:
// Parameters
F32 mTonemapExposure = 1.f;
// State // State
U32 mTonemapType = ALTonemap::TONEMAP_NONE; U32 mTonemapType = ALTonemap::TONEMAP_NONE;
LLVector3 mToneUchimuraParamA;
LLVector3 mToneUchimuraParamB;
LLVector3 mToneUnchartedParamA;
LLVector3 mToneUnchartedParamB;
LLVector3 mToneUnchartedParamC;
U32 mSharpenMethod = ALSharpen::SHARPEN_NONE; U32 mSharpenMethod = ALSharpen::SHARPEN_NONE;
// Texture Data // Texture Data
......
...@@ -641,14 +641,6 @@ std::string LLViewerShaderMgr::loadBasicShaders() ...@@ -641,14 +641,6 @@ std::string LLViewerShaderMgr::loadBasicShaders()
sum_lights_class = 1; sum_lights_class = 1;
} }
#if LL_DARWIN
// Work around driver crashes on older Macs when using deferred rendering
// NORSPEC-59
//
if (gGLManager.mIsMobileGF)
sum_lights_class = 3;
#endif
// Use the feature table to mask out the max light level to use. Also make sure it's at least 1. // Use the feature table to mask out the max light level to use. Also make sure it's at least 1.
S32 max_light_class = gSavedSettings.getS32("RenderShaderLightingMaxLevel"); S32 max_light_class = gSavedSettings.getS32("RenderShaderLightingMaxLevel");
sum_lights_class = llclamp(sum_lights_class, 1, max_light_class); sum_lights_class = llclamp(sum_lights_class, 1, max_light_class);
...@@ -768,9 +760,10 @@ std::string LLViewerShaderMgr::loadBasicShaders() ...@@ -768,9 +760,10 @@ std::string LLViewerShaderMgr::loadBasicShaders()
index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/deferredUtil.glsl", 1) ); index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/deferredUtil.glsl", 1) );
index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/shadowUtil.glsl", 1) ); index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/shadowUtil.glsl", 1) );
index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/aoUtil.glsl", 1) ); index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/aoUtil.glsl", 1) );
#if !LL_DARWIN if(gGLManager.mGLVersion >= 4.19f)
index_channels.push_back(-1); shaders.push_back( make_pair( "alchemy/LPMUtil.glsl", 1) ); {
#endif index_channels.push_back(-1); shaders.push_back( make_pair( "alchemy/LPMUtil.glsl", 1) );
}
index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/reflectionProbeF.glsl", has_reflection_probes ? 3 : 2) ); index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/reflectionProbeF.glsl", has_reflection_probes ? 3 : 2) );
index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/screenSpaceReflUtil.glsl", ssr ? 3 : 1) ); index_channels.push_back(-1); shaders.push_back( make_pair( "deferred/screenSpaceReflUtil.glsl", ssr ? 3 : 1) );
index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightNonIndexedF.glsl", mShaderLevel[SHADER_LIGHTING] ) ); index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightNonIndexedF.glsl", mShaderLevel[SHADER_LIGHTING] ) );
...@@ -2580,7 +2573,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2580,7 +2573,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
llassert(success); llassert(success);
} }
#if 0
if (success) if (success)
{ {
gDeferredPostGammaCorrectProgram.mName = "Deferred Gamma Correction Post Process"; gDeferredPostGammaCorrectProgram.mName = "Deferred Gamma Correction Post Process";
...@@ -2624,7 +2616,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2624,7 +2616,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
success = gLegacyPostGammaCorrectProgram.createShader(NULL, NULL); success = gLegacyPostGammaCorrectProgram.createShader(NULL, NULL);
llassert(success); llassert(success);
} }
#endif
if (success && gGLManager.mGLVersion > 3.9f) if (success && gGLManager.mGLVersion > 3.9f)
{ {
...@@ -2916,8 +2907,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2916,8 +2907,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
success = gDeferredBufferVisualProgram.createShader(NULL, NULL); success = gDeferredBufferVisualProgram.createShader(NULL, NULL);
} }
#if !LL_DARWIN if (success && gGLManager.mGLVersion >= 4.19f)
if (success)
{ {
gDeferredPostCASProgram.mName = "Contrast Adaptive Sharpen Shader"; gDeferredPostCASProgram.mName = "Contrast Adaptive Sharpen Shader";
gDeferredPostCASProgram.mFeatures.hasSrgb = true; gDeferredPostCASProgram.mFeatures.hasSrgb = true;
...@@ -2927,7 +2917,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2927,7 +2917,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostCASProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; gDeferredPostCASProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];
success = gDeferredPostCASProgram.createShader(NULL, NULL); success = gDeferredPostCASProgram.createShader(NULL, NULL);
} }
#endif
if (success) if (success)
{ {
...@@ -2944,7 +2933,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2944,7 +2933,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
{ {
gDeferredPostTonemapProgram.mName = "Tonemapping Shader None"; gDeferredPostTonemapProgram.mName = "Tonemapping Shader None";
gDeferredPostTonemapProgram.mFeatures.hasSrgb = true; gDeferredPostTonemapProgram.mFeatures.hasSrgb = true;
gDeferredPostTonemapProgram.mFeatures.hasLPM = false;
gDeferredPostTonemapProgram.mShaderFiles.clear(); gDeferredPostTonemapProgram.mShaderFiles.clear();
gDeferredPostTonemapProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); gDeferredPostTonemapProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostTonemapProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER)); gDeferredPostTonemapProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER));
...@@ -2958,7 +2946,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2958,7 +2946,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
{ {
gDeferredPostTonemapACESProgram.mName = "Tonemapping Shader ACES"; gDeferredPostTonemapACESProgram.mName = "Tonemapping Shader ACES";
gDeferredPostTonemapACESProgram.mFeatures.hasSrgb = true; gDeferredPostTonemapACESProgram.mFeatures.hasSrgb = true;
gDeferredPostTonemapACESProgram.mFeatures.hasLPM = false;
gDeferredPostTonemapACESProgram.mShaderFiles.clear(); gDeferredPostTonemapACESProgram.mShaderFiles.clear();
gDeferredPostTonemapACESProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); gDeferredPostTonemapACESProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostTonemapACESProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER)); gDeferredPostTonemapACESProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER));
...@@ -2972,7 +2959,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2972,7 +2959,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
{ {
gDeferredPostTonemapUchiProgram.mName = "Tonemapping Shader Uchimura"; gDeferredPostTonemapUchiProgram.mName = "Tonemapping Shader Uchimura";
gDeferredPostTonemapUchiProgram.mFeatures.hasSrgb = true; gDeferredPostTonemapUchiProgram.mFeatures.hasSrgb = true;
gDeferredPostTonemapUchiProgram.mFeatures.hasLPM = false;
gDeferredPostTonemapUchiProgram.mShaderFiles.clear(); gDeferredPostTonemapUchiProgram.mShaderFiles.clear();
gDeferredPostTonemapUchiProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); gDeferredPostTonemapUchiProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostTonemapUchiProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER)); gDeferredPostTonemapUchiProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER));
...@@ -2982,8 +2968,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2982,8 +2968,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
success = gDeferredPostTonemapUchiProgram.createShader(NULL, NULL); success = gDeferredPostTonemapUchiProgram.createShader(NULL, NULL);
} }
#if !LL_DARWIN if (success && gGLManager.mGLVersion >= 4.19f)
if (success)
{ {
gDeferredPostTonemapLPMProgram.mName = "Tonemapping Shader LPM"; gDeferredPostTonemapLPMProgram.mName = "Tonemapping Shader LPM";
gDeferredPostTonemapLPMProgram.mFeatures.hasSrgb = true; gDeferredPostTonemapLPMProgram.mFeatures.hasSrgb = true;
...@@ -2996,13 +2981,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() ...@@ -2996,13 +2981,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostTonemapLPMProgram.addPermutation("TONEMAP_METHOD", std::to_string(ALRenderUtil::TONEMAP_AMD)); gDeferredPostTonemapLPMProgram.addPermutation("TONEMAP_METHOD", std::to_string(ALRenderUtil::TONEMAP_AMD));
success = gDeferredPostTonemapLPMProgram.createShader(NULL, NULL); success = gDeferredPostTonemapLPMProgram.createShader(NULL, NULL);
} }
#endif
if (success) if (success)
{ {
gDeferredPostTonemapHableProgram.mName = "Tonemapping Shader Uncharted"; gDeferredPostTonemapHableProgram.mName = "Tonemapping Shader Uncharted";
gDeferredPostTonemapHableProgram.mFeatures.hasSrgb = true; gDeferredPostTonemapHableProgram.mFeatures.hasSrgb = true;
gDeferredPostTonemapHableProgram.mFeatures.hasLPM = false;
gDeferredPostTonemapHableProgram.mShaderFiles.clear(); gDeferredPostTonemapHableProgram.mShaderFiles.clear();
gDeferredPostTonemapHableProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); gDeferredPostTonemapHableProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostTonemapHableProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER)); gDeferredPostTonemapHableProgram.mShaderFiles.push_back(make_pair("alchemy/toneMapF.glsl", GL_FRAGMENT_SHADER));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment