Merge branch 'DRTVWR-559' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/app_settings/settings.xml # indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl # indra/newview/llface.cpp # indra/newview/llselectmgr.cpp # indra/newview/llviewerdisplay.cpp # indra/newview/pipeline.cppmaster
commit
d8eecb462a
|
|
@ -167,7 +167,7 @@ bool LLGLTFLoader::parseMeshes()
|
|||
bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const tinygltf::Mesh &mesh)
|
||||
{
|
||||
pModel->mLabel = mesh.name;
|
||||
int pos_idx, norm_idx, tan_idx, uv0_idx, uv1_idx, color0_idx, color1_idx;
|
||||
int pos_idx;
|
||||
tinygltf::Accessor indices_a, positions_a, normals_a, uv0_a, color0_a;
|
||||
|
||||
auto prims = mesh.primitives;
|
||||
|
|
@ -187,12 +187,15 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const tinygltf::Mesh &
|
|||
//if (positions_buf.name
|
||||
}
|
||||
|
||||
#if 0
|
||||
int norm_idx, tan_idx, uv0_idx, uv1_idx, color0_idx, color1_idx;
|
||||
norm_idx = (prim.attributes.count("NORMAL") > 0) ? prim.attributes.at("NORMAL") : -1;
|
||||
tan_idx = (prim.attributes.count("TANGENT") > 0) ? prim.attributes.at("TANGENT") : -1;
|
||||
uv0_idx = (prim.attributes.count("TEXCOORDS_0") > 0) ? prim.attributes.at("TEXCOORDS_0") : -1;
|
||||
uv1_idx = (prim.attributes.count("TEXCOORDS_1") > 0) ? prim.attributes.at("TEXCOORDS_1") : -1;
|
||||
color0_idx = (prim.attributes.count("COLOR_0") > 0) ? prim.attributes.at("COLOR_0") : -1;
|
||||
color1_idx = (prim.attributes.count("COLOR_1") > 0) ? prim.attributes.at("COLOR_1") : -1;
|
||||
#endif
|
||||
|
||||
if (prim.mode == TINYGLTF_MODE_TRIANGLES)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#include "v3color.h"
|
||||
#include "v2math.h"
|
||||
#include "lluuid.h"
|
||||
#include "llmd5.h"
|
||||
#include "hbxxh.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
|
@ -98,12 +98,10 @@ public:
|
|||
LLUUID getHash() const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
LLMD5 md5;
|
||||
md5.update((unsigned char*)this, sizeof(this));
|
||||
md5.finalize();
|
||||
LLUUID id;
|
||||
md5.raw_digest(id.mData);
|
||||
return id;
|
||||
// HACK - hash the bytes of this object but don't include the ref count
|
||||
LLUUID hash;
|
||||
HBXXH128::digest(hash, (unsigned char*)this + sizeof(S32), sizeof(this) - sizeof(S32));
|
||||
return hash;
|
||||
}
|
||||
|
||||
enum TextureInfo : U32
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#include "linden_common.h"
|
||||
|
||||
#include "llmaterial.h"
|
||||
#include "llmd5.h"
|
||||
#include "hbxxh.h"
|
||||
|
||||
/**
|
||||
* Materials cap parameters
|
||||
|
|
@ -479,13 +479,9 @@ U32 LLMaterial::getShaderMask(U32 alpha_mode)
|
|||
LLUUID LLMaterial::getHash() const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
LLMD5 md5;
|
||||
// HACK - hash the bytes of this LLMaterial, but trim off the S32 in LLRefCount
|
||||
md5.update((unsigned char*)this + sizeof(S32), sizeof(this) - sizeof(S32));
|
||||
md5.finalize();
|
||||
LLUUID id;
|
||||
md5.raw_digest(id.mData);
|
||||
// *TODO: Hash the overrides
|
||||
HBXXH128::digest(id, (unsigned char*)this + sizeof(S32), sizeof(this) - sizeof(S32));
|
||||
return id;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class LLGLSDefault
|
|||
{
|
||||
protected:
|
||||
LLGLEnable mColorMaterial;
|
||||
LLGLDisable mAlphaTest, mBlend, mCullFace, mDither, mFog,
|
||||
LLGLDisable mAlphaTest, mBlend, mCullFace, mDither,
|
||||
mLineSmooth, mLineStipple, mNormalize, mPolygonSmooth,
|
||||
mGLMultisample;
|
||||
public:
|
||||
|
|
@ -70,7 +70,6 @@ public:
|
|||
mBlend(GL_BLEND),
|
||||
mCullFace(GL_CULL_FACE),
|
||||
mDither(GL_DITHER),
|
||||
mFog(GL_FOG),
|
||||
mLineSmooth(GL_LINE_SMOOTH),
|
||||
mLineStipple(GL_LINE_STIPPLE),
|
||||
mNormalize(GL_NORMALIZE),
|
||||
|
|
@ -82,11 +81,11 @@ public:
|
|||
class LLGLSObjectSelect
|
||||
{
|
||||
protected:
|
||||
LLGLDisable mBlend, mFog, mAlphaTest;
|
||||
LLGLDisable mBlend, mAlphaTest;
|
||||
LLGLEnable mCullFace;
|
||||
public:
|
||||
LLGLSObjectSelect()
|
||||
: mBlend(GL_BLEND), mFog(GL_FOG),
|
||||
: mBlend(GL_BLEND),
|
||||
mAlphaTest(GL_ALPHA_TEST),
|
||||
mCullFace(GL_CULL_FACE)
|
||||
{ }
|
||||
|
|
@ -130,28 +129,6 @@ public:
|
|||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
class LLGLSFog
|
||||
{
|
||||
protected:
|
||||
LLGLEnable mFog;
|
||||
public:
|
||||
LLGLSFog()
|
||||
: mFog(GL_FOG)
|
||||
{}
|
||||
};
|
||||
|
||||
class LLGLSNoFog
|
||||
{
|
||||
protected:
|
||||
LLGLDisable mFog;
|
||||
public:
|
||||
LLGLSNoFog()
|
||||
: mFog(GL_FOG)
|
||||
{}
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
class LLGLSPipeline
|
||||
{
|
||||
protected:
|
||||
|
|
@ -175,16 +152,6 @@ public:
|
|||
{ }
|
||||
};
|
||||
|
||||
class LLGLSPipelineEmbossBump
|
||||
{
|
||||
protected:
|
||||
LLGLDisable mFog;
|
||||
public:
|
||||
LLGLSPipelineEmbossBump()
|
||||
: mFog(GL_FOG)
|
||||
{ }
|
||||
};
|
||||
|
||||
class LLGLSPipelineSelection
|
||||
{
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
|
|||
}
|
||||
}
|
||||
|
||||
if(features->calculatesAtmospherics)
|
||||
if(features->calculatesAtmospherics || features->hasGamma || features->isDeferred)
|
||||
{
|
||||
if (features->hasWaterFog)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
<string>CameraFNumber</string>
|
||||
<string>FramePerSecondLimit</string>
|
||||
<string>FSLimitFramerate</string>
|
||||
<string>FSRenderDoFUnderwater</string>
|
||||
<string>FSRenderVignette</string>
|
||||
<string>FullScreen</string>
|
||||
<string>RenderAnisotropic</string>
|
||||
|
|
@ -33,7 +32,9 @@
|
|||
<string>RenderLocalLights</string>
|
||||
<string>RenderMaxPartCount</string>
|
||||
<string>RenderQualityPerformance</string>
|
||||
<string>RenderReflectionsEnabled</string>
|
||||
<string>RenderReflectionProbeDetail</string>
|
||||
<string>RenderScreenSpaceReflections</string>
|
||||
<string>RenderShaderLightingMaxLevel</string>
|
||||
<string>RenderShadowDetail</string>
|
||||
<string>RenderShadowResolutionScale</string>
|
||||
|
|
@ -45,6 +46,7 @@
|
|||
<string>RenderUnloadedAvatar</string>
|
||||
<string>RenderUseStreamVBO</string>
|
||||
<string>RenderVBOEnable</string>
|
||||
<string>RenderVSyncEnable</string>
|
||||
<string>RenderVolumeLODFactor</string>
|
||||
<string>RenderWaterRefResolution</string>
|
||||
<string>TextureDiscardLevel</string>
|
||||
|
|
|
|||
|
|
@ -12468,19 +12468,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<!-- <FS:TS> FIRE-16251: Depth of Field does not work underwater -->
|
||||
<key>FSRenderDoFUnderwater</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether to use depth of field effect when enabled and underwater</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<!-- </FS:TS> FIRE-16251 -->
|
||||
<key>FSFocusPointLocked</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -28,11 +28,7 @@
|
|||
|
||||
/*[EXTRA_CODE_HERE]*/
|
||||
|
||||
#ifdef DEFINE_GL_FRAGCOLOR
|
||||
out vec4 frag_color;
|
||||
#else
|
||||
#define frag_color gl_FragColor
|
||||
#endif
|
||||
|
||||
#define FXAA_PC 1
|
||||
//#define FXAA_GLSL_130 1
|
||||
|
|
@ -2092,6 +2088,7 @@ half4 FxaaPixelShader(
|
|||
#endif
|
||||
|
||||
uniform sampler2D diffuseMap;
|
||||
uniform sampler2D depthMap;
|
||||
|
||||
uniform vec2 rcp_screen_res;
|
||||
uniform vec4 rcp_frame_opt;
|
||||
|
|
@ -2120,8 +2117,7 @@ void main()
|
|||
|
||||
|
||||
|
||||
//diff = texture2D(diffuseMap, vary_tc);
|
||||
|
||||
frag_color = diff;
|
||||
|
||||
frag_color = diff;
|
||||
|
||||
gl_FragDepth = texture(depthMap, vary_fragcoord.xy).r;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,32 +27,18 @@
|
|||
|
||||
/*[EXTRA_CODE_HERE]*/
|
||||
|
||||
#ifdef DEFINE_GL_FRAGCOLOR
|
||||
out vec4 frag_color;
|
||||
#else
|
||||
#define frag_color gl_FragColor
|
||||
#endif
|
||||
|
||||
uniform sampler2D glowMap;
|
||||
uniform sampler2D screenMap;
|
||||
uniform vec3 exo_vignette;
|
||||
uniform sampler2D emissiveRect;
|
||||
uniform sampler2D diffuseRect;
|
||||
uniform sampler2D depthMap;
|
||||
|
||||
VARYING vec2 vary_texcoord0;
|
||||
VARYING vec2 vary_texcoord1;
|
||||
|
||||
float saturate(float val)
|
||||
{
|
||||
return clamp(val, 0, 1);
|
||||
}
|
||||
in vec2 tc;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 diff = texture2D(screenMap, vary_texcoord1.xy) + texture2D(glowMap, vary_texcoord0.xy);
|
||||
if (exo_vignette.x > 0)
|
||||
{
|
||||
vec2 tc = vary_texcoord0.xy - 0.5f;
|
||||
float vignette = 1 - dot(tc, tc);
|
||||
diff.rgb *= saturate(pow(mix(1, vignette * vignette * vignette * vignette * exo_vignette.z, saturate(exo_vignette.x)), exo_vignette.y));
|
||||
}
|
||||
frag_color = diff;
|
||||
frag_color = texture2D(emissiveRect, tc) +
|
||||
texture2D(diffuseRect, tc);
|
||||
|
||||
gl_FragDepth = texture(depthMap, tc).r;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,20 +27,17 @@
|
|||
|
||||
/*[EXTRA_CODE_HERE]*/
|
||||
|
||||
#ifdef DEFINE_GL_FRAGCOLOR
|
||||
out vec4 frag_color;
|
||||
#else
|
||||
#define frag_color gl_FragColor
|
||||
#endif
|
||||
|
||||
uniform sampler2D diffuseRect;
|
||||
|
||||
uniform vec2 screen_res;
|
||||
VARYING vec2 vary_tc;
|
||||
|
||||
in vec2 vary_tc;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 col = texture2D(diffuseRect, vary_tc).rgb;
|
||||
|
||||
frag_color = vec4(col.rgb, dot(col.rgb, vec3(0.299, 0.587, 0.144)));
|
||||
vec3 col = texture(diffuseRect, vary_tc).rgb;
|
||||
|
||||
frag_color = vec4(col.rgb, dot(col.rgb, vec3(0.299, 0.587, 0.144)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,17 +25,13 @@
|
|||
|
||||
uniform mat4 modelview_projection_matrix;
|
||||
|
||||
ATTRIBUTE vec3 position;
|
||||
ATTRIBUTE vec2 texcoord0;
|
||||
ATTRIBUTE vec2 texcoord1;
|
||||
in vec3 position;
|
||||
|
||||
VARYING vec2 vary_texcoord0;
|
||||
VARYING vec2 vary_texcoord1;
|
||||
out vec2 tc;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = vec4(position.xyz, 1.0);
|
||||
vary_texcoord0 = position.xy * 0.5 + 0.5;
|
||||
vary_texcoord1 = vary_texcoord0;
|
||||
gl_Position = vec4(position.xyz, 1.0);
|
||||
tc = position.xy * 0.5 + 0.5;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 47
|
||||
version 48
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -73,6 +73,7 @@ RenderMaxTextureIndex 1 16
|
|||
RenderGLContextCoreProfile 1 1
|
||||
RenderGLMultiThreaded 1 0
|
||||
RenderReflectionProbeResolution 1 256
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
|
||||
//
|
||||
|
|
@ -101,6 +102,7 @@ RenderUseAdvancedAtmospherics 1 0
|
|||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 48
|
||||
RenderFSAASamples 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Low Graphics Settings
|
||||
|
|
@ -127,6 +129,7 @@ RenderUseAdvancedAtmospherics 1 0
|
|||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 48
|
||||
RenderFSAASamples 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -153,6 +156,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings (deferred enabled)
|
||||
|
|
@ -179,6 +183,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -205,6 +210,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -231,6 +237,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -257,6 +264,7 @@ RenderShadowDetail 1 2
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 36
|
||||
version 37
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -73,6 +73,7 @@ RenderMaxTextureIndex 1 16
|
|||
RenderGLContextCoreProfile 1 1
|
||||
RenderGLMultiThreaded 1 0
|
||||
RenderReflectionProbeResolution 1 256
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
|
||||
//
|
||||
|
|
@ -101,6 +102,7 @@ RenderUseAdvancedAtmospherics 1 0
|
|||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 48
|
||||
RenderFSAASamples 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Low Graphics Settings
|
||||
|
|
@ -127,6 +129,7 @@ RenderUseAdvancedAtmospherics 1 0
|
|||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 48
|
||||
RenderFSAASamples 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -153,6 +156,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings (deferred enabled)
|
||||
|
|
@ -179,6 +183,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -205,6 +210,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -231,6 +237,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -257,6 +264,7 @@ RenderShadowDetail 1 2
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 43
|
||||
version 44
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -71,6 +71,7 @@ RenderGLContextCoreProfile 1 1
|
|||
RenderGLMultiThreaded 1 0
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 2
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
//
|
||||
// Low Graphics Settings
|
||||
|
|
@ -98,6 +99,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 0
|
||||
RenderReflectionsEnabled 1 0
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Low Graphics Settings
|
||||
|
|
@ -124,6 +126,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 0
|
||||
RenderReflectionsEnabled 1 0
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -150,6 +153,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings (deferred enabled)
|
||||
|
|
@ -176,6 +180,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 0
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -202,6 +207,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (deferred + SSAO)
|
||||
|
|
@ -228,6 +234,7 @@ WLSkyDetail 1 48
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -254,6 +261,7 @@ RenderShadowDetail 1 2
|
|||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 1
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@ void LLRenderPass::pushGLTFBatches(U32 type)
|
|||
|
||||
auto& mat = params.mGLTFMaterial;
|
||||
|
||||
mat->bind();
|
||||
mat->bind(params.mTexture);
|
||||
|
||||
LLGLDisable cull_face(mat->mDoubleSided ? GL_CULL_FACE : 0);
|
||||
|
||||
|
|
@ -512,7 +512,7 @@ void LLRenderPass::pushRiggedGLTFBatches(U32 type)
|
|||
|
||||
auto& mat = params.mGLTFMaterial;
|
||||
|
||||
mat->bind();
|
||||
mat->bind(params.mTexture);
|
||||
|
||||
LLGLDisable cull_face(mat->mDoubleSided ? GL_CULL_FACE : 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -117,8 +117,18 @@ static void prepare_alpha_shader(LLGLSLShader* shader, bool textureGamma, bool d
|
|||
}
|
||||
shader->uniform1i(LLShaderMgr::NO_ATMO, (LLPipeline::sRenderingHUDs) ? 1 : 0);
|
||||
shader->uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f / 2.2f));
|
||||
shader->uniform1f(waterSign, water_sign);
|
||||
shader->uniform4fv(LLShaderMgr::WATER_WATERPLANE, 1, LLDrawPoolAlpha::sWaterPlane.mV);
|
||||
|
||||
if (LLPipeline::sRenderingHUDs)
|
||||
{ // for HUD attachments, only the pre-water pass is executed and we never want to clip anything
|
||||
LLVector4 near_clip(0, 0, -1, 0);
|
||||
shader->uniform1f(waterSign, 1.f);
|
||||
shader->uniform4fv(LLShaderMgr::WATER_WATERPLANE, 1, near_clip.mV);
|
||||
}
|
||||
else
|
||||
{
|
||||
shader->uniform1f(waterSign, water_sign);
|
||||
shader->uniform4fv(LLShaderMgr::WATER_WATERPLANE, 1, LLDrawPoolAlpha::sWaterPlane.mV);
|
||||
}
|
||||
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{
|
||||
|
|
@ -647,18 +657,21 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, bool depth_only, bool rigged)
|
|||
LLSpatialBridge* bridge = group->getSpatialPartition()->asBridge();
|
||||
const LLVector4a* ext = bridge ? bridge->getSpatialExtents() : group->getExtents();
|
||||
|
||||
if (above_water)
|
||||
{ // reject any spatial groups that have no part above water
|
||||
if (ext[1].getF32ptr()[2] < water_height)
|
||||
{
|
||||
continue;
|
||||
if (!LLPipeline::sRenderingHUDs) // ignore above/below water for HUD render
|
||||
{
|
||||
if (above_water)
|
||||
{ // reject any spatial groups that have no part above water
|
||||
if (ext[1].getF32ptr()[2] < water_height)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // reject any spatial groups that he no part below water
|
||||
if (ext[0].getF32ptr()[2] > water_height)
|
||||
{
|
||||
continue;
|
||||
else
|
||||
{ // reject any spatial groups that he no part below water
|
||||
if (ext[0].getF32ptr()[2] > water_height)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -730,7 +743,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, bool depth_only, bool rigged)
|
|||
gPipeline.bindDeferredShaderFast(*target_shader);
|
||||
}
|
||||
|
||||
params.mGLTFMaterial->bind();
|
||||
params.mGLTFMaterial->bind(params.mTexture);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -676,7 +676,6 @@ void LLDrawPoolBump::beginBump()
|
|||
void LLDrawPoolBump::renderBump(U32 pass)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; //LL_RECORD_BLOCK_TIME(FTM_RENDER_BUMP);
|
||||
LLGLDisable fog(GL_FOG);
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_LEQUAL);
|
||||
LLGLEnable blend(GL_BLEND);
|
||||
gGL.diffuseColor4f(1,1,1,1);
|
||||
|
|
|
|||
|
|
@ -84,8 +84,6 @@ void LLDrawPoolSky::render(S32 pass)
|
|||
|
||||
LLGLSPipelineDepthTestSkyBox gls_skybox(true, false);
|
||||
|
||||
LLGLEnable fog_enable( (mShaderLevel < 1 && LLViewerCamera::getInstance()->cameraUnderWater()) ? GL_FOG : 0);
|
||||
|
||||
gGL.pushMatrix();
|
||||
LLVector3 origin = LLViewerCamera::getInstance()->getOrigin();
|
||||
gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ void LLDrawPoolWater::beginPostDeferredPass(S32 pass)
|
|||
LL_PROFILE_GPU_ZONE("water beginPostDeferredPass")
|
||||
gGL.setColorMask(true, true);
|
||||
|
||||
if (LLPipeline::sRenderTransparentWater && !gCubeSnapshot)
|
||||
if (LLPipeline::sRenderTransparentWater)
|
||||
{
|
||||
// copy framebuffer contents so far to a texture to be used for
|
||||
// reflections and refractions
|
||||
|
|
|
|||
|
|
@ -650,14 +650,6 @@ void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wirefram
|
|||
}
|
||||
else
|
||||
{
|
||||
LLGLEnable fog(GL_FOG);
|
||||
glFogi(GL_FOG_MODE, GL_LINEAR);
|
||||
float d = (LLViewerCamera::getInstance()->getPointOfInterest() - LLViewerCamera::getInstance()->getOrigin()).magVec();
|
||||
LLColor4 fogCol = color * fogCfx;
|
||||
glFogf(GL_FOG_START, d);
|
||||
glFogf(GL_FOG_END, d*(1 + (LLViewerCamera::getInstance()->getView() / LLViewerCamera::getInstance()->getDefaultFOV())));
|
||||
glFogfv(GL_FOG_COLOR, fogCol.mV);
|
||||
|
||||
gGL.flush();
|
||||
{
|
||||
gGL.diffuseColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ LLFetchedGLTFMaterial::~LLFetchedGLTFMaterial()
|
|||
|
||||
}
|
||||
|
||||
void LLFetchedGLTFMaterial::bind()
|
||||
void LLFetchedGLTFMaterial::bind(LLViewerTexture* media_tex)
|
||||
{
|
||||
// glTF 2.0 Specification 3.9.4. Alpha Coverage
|
||||
// mAlphaCutoff is only valid for LLGLTFMaterial::ALPHA_MODE_MASK
|
||||
|
|
@ -54,15 +54,19 @@ void LLFetchedGLTFMaterial::bind()
|
|||
|
||||
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
|
||||
|
||||
// override emissive and base color textures with media tex if present
|
||||
LLViewerTexture* baseColorTex = media_tex ? media_tex : mBaseColorTexture;
|
||||
LLViewerTexture* emissiveTex = media_tex ? media_tex : mEmissiveTexture;
|
||||
|
||||
if (mAlphaMode == LLGLTFMaterial::ALPHA_MODE_MASK)
|
||||
{
|
||||
min_alpha = mAlphaCutoff;
|
||||
}
|
||||
shader->uniform1f(LLShaderMgr::MINIMUM_ALPHA, min_alpha);
|
||||
|
||||
if (mBaseColorTexture.notNull())
|
||||
if (baseColorTex != nullptr)
|
||||
{
|
||||
gGL.getTexUnit(0)->bindFast(mBaseColorTexture);
|
||||
gGL.getTexUnit(0)->bindFast(baseColorTex);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -89,9 +93,9 @@ void LLFetchedGLTFMaterial::bind()
|
|||
shader->bindTexture(LLShaderMgr::SPECULAR_MAP, LLViewerFetchedTexture::sWhiteImagep);
|
||||
}
|
||||
|
||||
if (mEmissiveTexture.notNull())
|
||||
if (emissiveTex != nullptr)
|
||||
{
|
||||
shader->bindTexture(LLShaderMgr::EMISSIVE_MAP, mEmissiveTexture); // PBR sRGB Emissive
|
||||
shader->bindTexture(LLShaderMgr::EMISSIVE_MAP, emissiveTex); // PBR sRGB Emissive
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ public:
|
|||
void onMaterialComplete(std::function<void()> material_complete);
|
||||
|
||||
// bind this material for rendering
|
||||
void bind();
|
||||
// media_tex - optional media texture that may override the base color texture
|
||||
void bind(LLViewerTexture* media_tex = nullptr);
|
||||
|
||||
// Textures used for fetching/rendering
|
||||
LLPointer<LLViewerFetchedTexture> mBaseColorTexture;
|
||||
|
|
|
|||
|
|
@ -770,7 +770,7 @@ void LLMaterialEditor::markChangesUnsaved(U32 dirty_flag)
|
|||
const LLInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm(item->getPermissions());
|
||||
//LLPermissions perm(item->getPermissions());
|
||||
bool allow_modify = canModify(mObjectUUID, item);
|
||||
bool source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(mItemUUID, gInventory.getLibraryRootFolderID());
|
||||
bool source_notecard = mNotecardInventoryID.notNull();
|
||||
|
|
@ -1339,7 +1339,6 @@ bool LLMaterialEditor::updateInventoryItem(const std::string &buffer, const LLUU
|
|||
}
|
||||
else if (!task_id.isNull() && !task_url.empty())
|
||||
{
|
||||
LLUUID object_uuid(task_id);
|
||||
uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>(task_id, item_id, LLAssetType::AT_MATERIAL, buffer,
|
||||
[](LLUUID itemId, LLUUID task_id, LLUUID newAssetId, LLSD)
|
||||
{
|
||||
|
|
@ -1390,7 +1389,6 @@ void LLMaterialEditor::createInventoryItem(const std::string &buffer, const std:
|
|||
// gen a new uuid for this asset
|
||||
LLTransactionID tid;
|
||||
tid.generate(); // timestamp-based randomization + uniquification
|
||||
LLAssetID new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
|
||||
U32 next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Materials");
|
||||
LLUUID parent = gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_MATERIAL);
|
||||
const U8 subtype = NO_INV_SUBTYPE; // TODO maybe use AT_SETTINGS and LLSettingsType::ST_MATERIAL ?
|
||||
|
|
|
|||
|
|
@ -4147,8 +4147,7 @@ BOOL LLModelPreview::render()
|
|||
LLGLDisable no_blend(GL_BLEND);
|
||||
LLGLEnable cull(GL_CULL_FACE);
|
||||
LLGLDepthTest depth(GL_FALSE); // SL-12781 disable z-buffer to render background color
|
||||
LLGLDisable fog(GL_FOG);
|
||||
|
||||
|
||||
{
|
||||
gUIProgram.bind();
|
||||
|
||||
|
|
|
|||
|
|
@ -7229,17 +7229,8 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
|
|||
{
|
||||
gGL.flush();
|
||||
gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
|
||||
// <FS:Ansariel> Don't use fixed functions when using shader renderer; found by Drake Arconis
|
||||
//LLGLEnable fog(GL_FOG);
|
||||
//glFogi(GL_FOG_MODE, GL_LINEAR);
|
||||
//float d = (camera.getPointOfInterest()-camera.getOrigin()).magVec();
|
||||
//LLColor4 fogCol = color * (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal() - gAgentCamera.getCameraPositionGlobal()).magVec() / (LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec() * 4), 0.0, 1.0);
|
||||
//glFogf(GL_FOG_START, d);
|
||||
//glFogf(GL_FOG_END, d*(1 + (camera.getView() / camera.getDefaultFOV())));
|
||||
//glFogfv(GL_FOG_COLOR, fogCol.mV);
|
||||
// </FS:Ansariel>
|
||||
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
|
||||
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
|
||||
gGL.flush();
|
||||
gGL.begin(LLRender::LINES);
|
||||
{
|
||||
|
|
|
|||
|
|
@ -718,11 +718,6 @@ BOOL LLSpatialGroup::changeLOD()
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (mDistance > mRadius*2.f)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (needsUpdate())
|
||||
|
|
|
|||
|
|
@ -1312,7 +1312,6 @@ void render_hud_attachments()
|
|||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_VOLUME);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_ALPHA);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_ALPHA_PRE_WATER);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_ALPHA_POST_WATER);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_ALPHA_MASK);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_FULLBRIGHT_ALPHA_MASK);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_FULLBRIGHT);
|
||||
|
|
@ -1475,23 +1474,17 @@ void render_ui(F32 zoom_factor, int subfield)
|
|||
gGL.popMatrix();
|
||||
}
|
||||
|
||||
// Render our post process prior to the HUD, UI, etc.
|
||||
gPipeline.renderPostProcess();
|
||||
|
||||
// apply gamma correction and post effects
|
||||
gPipeline.renderFinalize();
|
||||
|
||||
{
|
||||
LLGLState::checkStates();
|
||||
|
||||
// Render our post process prior to the HUD, UI, etc.
|
||||
gPipeline.renderPostProcess();
|
||||
|
||||
LLGLState::checkStates();
|
||||
// draw hud and 3D ui elements into screen render target so they'll be able to use
|
||||
// the depth buffer (avoids extra copy of depth buffer per frame)
|
||||
gPipeline.screenTarget()->bindTarget();
|
||||
// SL-15709
|
||||
// NOTE: Tracy only allows one ZoneScoped per function.
|
||||
// Solutions are:
|
||||
// 1. Use a new scope
|
||||
// 2. Use named zones
|
||||
// 3. Use transient zones
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_UI("HUD"); //LL_RECORD_BLOCK_TIME(FTM_RENDER_HUD);
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_UI("HUD");
|
||||
render_hud_elements();
|
||||
// [RLVa:KB] - Checked: RLVa-2.2 (@setoverlay)
|
||||
if (RlvActions::hasBehaviour(RLV_BHVR_SETOVERLAY))
|
||||
|
|
@ -1526,11 +1519,6 @@ void render_ui(F32 zoom_factor, int subfield)
|
|||
}
|
||||
}
|
||||
|
||||
gPipeline.screenTarget()->flush();
|
||||
|
||||
// apply gamma correction and post effects before rendering 2D UI
|
||||
gPipeline.renderFinalize();
|
||||
|
||||
if (render_ui)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_UI("UI 2D"); //LL_RECORD_BLOCK_TIME(FTM_RENDER_UI_2D);
|
||||
|
|
|
|||
|
|
@ -5537,13 +5537,16 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
|
|||
if (gltf_mat != nullptr)
|
||||
{
|
||||
mat_id = gltf_mat->getHash(); // TODO: cache this hash
|
||||
if (!facep->hasMedia())
|
||||
{ // no media texture, face texture will be unused
|
||||
tex = nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mat = facep->getTextureEntry()->getMaterialParams().get();
|
||||
if (mat)
|
||||
{
|
||||
//mat_id = facep->getTextureEntry()->getMaterialID().asUUID();
|
||||
mat_id = facep->getTextureEntry()->getMaterialParams()->getHash();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -192,9 +192,6 @@ F32 LLPipeline::RenderGlowWidth;
|
|||
F32 LLPipeline::RenderGlowStrength;
|
||||
bool LLPipeline::RenderDepthOfField;
|
||||
bool LLPipeline::RenderDepthOfFieldInEditMode;
|
||||
//<FS:TS> FIRE-16251: Depth of field does not work underwater
|
||||
bool LLPipeline::FSRenderDepthOfFieldUnderwater;
|
||||
//</FS:TS> FIRE-16251
|
||||
// <FS:Beq> FIRE-16728 Add free aim mouse and focus lock
|
||||
bool LLPipeline::FSFocusPointLocked;
|
||||
bool LLPipeline::FSFocusPointFollowsPointer;
|
||||
|
|
@ -832,6 +829,9 @@ LLPipeline::eFBOStatus LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
|||
// - if not multisampled, shrink resolution and try again (favor X resolution over Y)
|
||||
// Make sure to call "releaseScreenBuffers" after each failure to cleanup the partially loaded state
|
||||
|
||||
// refresh cached settings here to protect against inconsistent event handling order
|
||||
refreshCachedSettings();
|
||||
|
||||
U32 samples = RenderFSAASamples;
|
||||
|
||||
eFBOStatus ret = FBO_SUCCESS_FULLRES;
|
||||
|
|
@ -1152,9 +1152,6 @@ void LLPipeline::refreshCachedSettings()
|
|||
RenderGlowStrength = gSavedSettings.getF32("RenderGlowStrength");
|
||||
RenderDepthOfField = gSavedSettings.getBOOL("RenderDepthOfField");
|
||||
RenderDepthOfFieldInEditMode = gSavedSettings.getBOOL("RenderDepthOfFieldInEditMode");
|
||||
//<FS:TS> FIRE-16251: Depth of Field does not work underwater
|
||||
FSRenderDepthOfFieldUnderwater = gSavedSettings.getBOOL("FSRenderDoFUnderwater");
|
||||
//</FS:TS> FIRE-16251
|
||||
// <FS:Beq> FIRE-16728 Add free aim mouse and focus lock
|
||||
FSFocusPointLocked = gSavedSettings.getBOOL("FSFocusPointLocked");
|
||||
FSFocusPointFollowsPointer = gSavedSettings.getBOOL("FSFocusPointFollowsPointer");
|
||||
|
|
@ -1261,15 +1258,13 @@ void LLPipeline::releaseShadowBuffers()
|
|||
|
||||
void LLPipeline::releaseScreenBuffers()
|
||||
{
|
||||
mRT->uiScreen.release();
|
||||
mRT->screen.release();
|
||||
mRT->fxaaBuffer.release();
|
||||
mRT->deferredScreen.release();
|
||||
mRT->deferredDepth.release();
|
||||
mRT->deferredLight.release();
|
||||
mRT->uiScreen.release();
|
||||
mRT->screen.release();
|
||||
mRT->fxaaBuffer.release();
|
||||
mRT->deferredScreen.release();
|
||||
mRT->deferredLight.release();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LLPipeline::releaseSunShadowTarget(U32 index)
|
||||
{
|
||||
llassert(index < 4);
|
||||
|
|
@ -7426,12 +7421,8 @@ void LLPipeline::renderPostProcess()
|
|||
// [RLVa:KB] - @setsphere
|
||||
LLRenderTarget* pRenderBuffer = (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) ? &mRT->deferredLight : nullptr;
|
||||
// [/RLVa:KB]
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
//<FS:TS> FIRE-16251: Depth of Field does not work underwater
|
||||
//bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
|
||||
bool dof_enabled = (FSRenderDepthOfFieldUnderwater || !LLViewerCamera::getInstance()->cameraUnderWater()) &&
|
||||
//</FS:TS> FIRE-16251
|
||||
bool dof_enabled =
|
||||
(RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) &&
|
||||
RenderDepthOfField &&
|
||||
!gCubeSnapshot;
|
||||
|
|
@ -7752,10 +7743,7 @@ void LLPipeline::renderPostProcess()
|
|||
|
||||
LLRenderTarget* LLPipeline::screenTarget() {
|
||||
|
||||
//<FS:TS> FIRE-16251: Depth of Field does not work underwater
|
||||
//bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
|
||||
bool dof_enabled = (FSRenderDepthOfFieldUnderwater || !LLViewerCamera::getInstance()->cameraUnderWater()) &&
|
||||
//</FS:TS> FIRE-16251
|
||||
bool dof_enabled =
|
||||
(RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) &&
|
||||
RenderDepthOfField &&
|
||||
!gCubeSnapshot;
|
||||
|
|
@ -7899,9 +7887,9 @@ void LLPipeline::renderFinalize()
|
|||
// [RLVa:KB] - @setsphere
|
||||
LLRenderTarget* pRenderBuffer = (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE)) ? &mRT->deferredLight : nullptr;
|
||||
// [/RLVa:KB]
|
||||
if (RenderDeferred)
|
||||
{
|
||||
bool multisample = RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete() && !gCubeSnapshot;
|
||||
llassert(!gCubeSnapshot);
|
||||
bool multisample = RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete();
|
||||
// [RLVa:KB] - @setsphere
|
||||
if (multisample && !pRenderBuffer)
|
||||
{
|
||||
|
|
@ -7951,11 +7939,11 @@ void LLPipeline::renderFinalize()
|
|||
}
|
||||
// [RLVa:KB]
|
||||
|
||||
gGL.begin(LLRender::TRIANGLE_STRIP);
|
||||
gGL.vertex2f(-1, -1);
|
||||
gGL.vertex2f(-1, 3);
|
||||
gGL.vertex2f(3, -1);
|
||||
gGL.end();
|
||||
{
|
||||
LLGLDepthTest depth_test(GL_FALSE, GL_FALSE, GL_ALWAYS);
|
||||
mScreenTriangleVB->setBuffer();
|
||||
mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3);
|
||||
}
|
||||
|
||||
gGL.flush();
|
||||
|
||||
|
|
@ -7991,22 +7979,36 @@ void LLPipeline::renderFinalize()
|
|||
shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT2, -2.f / width * scale_x, -2.f / height * scale_y,
|
||||
2.f / width * scale_x, 2.f / height * scale_y);
|
||||
|
||||
gGL.begin(LLRender::TRIANGLE_STRIP);
|
||||
gGL.vertex2f(-1, -1);
|
||||
gGL.vertex2f(-1, 3);
|
||||
gGL.vertex2f(3, -1);
|
||||
gGL.end();
|
||||
{
|
||||
// at this point we should pointed at the backbuffer
|
||||
llassert(LLRenderTarget::sCurFBO == 0);
|
||||
|
||||
gGL.flush();
|
||||
LLGLDepthTest depth_test(GL_TRUE, GL_TRUE, GL_ALWAYS);
|
||||
S32 depth_channel = shader->getTextureChannel(LLShaderMgr::DEFERRED_DEPTH);
|
||||
gGL.getTexUnit(depth_channel)->bind(&mRT->deferredScreen, true);
|
||||
|
||||
mScreenTriangleVB->setBuffer();
|
||||
mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3);
|
||||
}
|
||||
|
||||
shader->unbind();
|
||||
}
|
||||
else
|
||||
{
|
||||
// at this point we should pointed at the backbuffer
|
||||
llassert(LLRenderTarget::sCurFBO == 0);
|
||||
|
||||
LLGLDepthTest depth_test(GL_TRUE, GL_TRUE, GL_ALWAYS);
|
||||
|
||||
shader->bind();
|
||||
|
||||
S32 glow_channel = shader->getTextureChannel(LLShaderMgr::DEFERRED_EMISSIVE);
|
||||
S32 screen_channel = shader->getTextureChannel(LLShaderMgr::DEFERRED_DIFFUSE);
|
||||
S32 depth_channel = shader->getTextureChannel(LLShaderMgr::DEFERRED_DEPTH);
|
||||
|
||||
gGL.getTexUnit(0)->bind(&mGlow[1]);
|
||||
gGL.getTexUnit(1)->bind(screenTarget());
|
||||
gGL.getTexUnit(glow_channel)->bind(&mGlow[1]);
|
||||
gGL.getTexUnit(screen_channel)->bind(screenTarget());
|
||||
gGL.getTexUnit(depth_channel)->bind(&mRT->deferredScreen, true);
|
||||
|
||||
gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
|
||||
gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
|
||||
|
|
@ -8014,73 +8016,15 @@ void LLPipeline::renderFinalize()
|
|||
gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
|
||||
glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
|
||||
|
||||
gGL.begin(LLRender::TRIANGLE_STRIP);
|
||||
gGL.vertex2f(-1, -1);
|
||||
gGL.vertex2f(-1, 3);
|
||||
gGL.vertex2f(3, -1);
|
||||
gGL.end();
|
||||
mScreenTriangleVB->setBuffer();
|
||||
mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3);
|
||||
|
||||
gGL.flush();
|
||||
shader->unbind();
|
||||
}
|
||||
}
|
||||
|
||||
#if 0 // DEPRECATED
|
||||
else // not deferred
|
||||
{
|
||||
// [RLVa:KB] - @setsphere
|
||||
if (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE))
|
||||
{
|
||||
LLShaderEffectParams params(&mRT->screen, &mRT->deferredLight, false);
|
||||
LLVfxManager::instance().runEffect(EVisualEffect::RlvSphere, ¶ms);
|
||||
pRenderBuffer = params.m_pDstBuffer;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
U32 mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
|
||||
LLPointer<LLVertexBuffer> buff = new LLVertexBuffer(mask, 0);
|
||||
buff->allocateBuffer(3, 0);
|
||||
|
||||
LLStrider<LLVector3> v;
|
||||
LLStrider<LLVector2> uv1;
|
||||
LLStrider<LLVector2> uv2;
|
||||
|
||||
buff->getVertexStrider(v);
|
||||
buff->getTexCoord0Strider(uv1);
|
||||
buff->getTexCoord1Strider(uv2);
|
||||
|
||||
uv1[0] = LLVector2(0, 0);
|
||||
uv1[1] = LLVector2(0, 2);
|
||||
uv1[2] = LLVector2(2, 0);
|
||||
|
||||
uv2[0] = LLVector2(0, 0);
|
||||
uv2[1] = LLVector2(0, tc2.mV[1] * 2.f);
|
||||
uv2[2] = LLVector2(tc2.mV[0] * 2.f, 0);
|
||||
|
||||
v[0] = LLVector3(-1, -1, 0);
|
||||
v[1] = LLVector3(-1, 3, 0);
|
||||
v[2] = LLVector3(3, -1, 0);
|
||||
|
||||
buff->flush();
|
||||
|
||||
LLGLDisable blend(GL_BLEND);
|
||||
|
||||
gGlowCombineProgram.bind();
|
||||
|
||||
gGL.getTexUnit(0)->bind(&mGlow[1]);
|
||||
// [RLVa:KB] - @setsphere
|
||||
gGL.getTexUnit(1)->bind(pRenderBuffer ? pRenderBuffer : &mRT->screen);
|
||||
// [/RLVa:KB]
|
||||
//gGL.getTexUnit(1)->bind(&mRT->screen);
|
||||
|
||||
LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE : 0);
|
||||
|
||||
buff->setBuffer();
|
||||
buff->drawArrays(LLRender::TRIANGLE_STRIP, 0, 3);
|
||||
|
||||
gGlowCombineProgram.unbind();
|
||||
}
|
||||
#endif
|
||||
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
||||
|
||||
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES))
|
||||
|
|
@ -8159,7 +8103,6 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_
|
|||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
|
||||
LLRenderTarget* deferred_target = &mRT->deferredScreen;
|
||||
//LLRenderTarget* deferred_depth_target = &mRT->deferredDepth;
|
||||
LLRenderTarget* deferred_light_target = &mRT->deferredLight;
|
||||
|
||||
shader.bind();
|
||||
|
|
@ -9041,7 +8984,6 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
|
|||
void LLPipeline::unbindDeferredShader(LLGLSLShader &shader)
|
||||
{
|
||||
LLRenderTarget* deferred_target = &mRT->deferredScreen;
|
||||
//LLRenderTarget* deferred_depth_target = &mRT->deferredDepth;
|
||||
LLRenderTarget* deferred_light_target = &mRT->deferredLight;
|
||||
|
||||
stop_glerror();
|
||||
|
|
|
|||
|
|
@ -680,7 +680,6 @@ public:
|
|||
LLRenderTarget deferredScreen;
|
||||
LLRenderTarget fxaaBuffer;
|
||||
LLRenderTarget edgeMap;
|
||||
LLRenderTarget deferredDepth;
|
||||
LLRenderTarget deferredLight;
|
||||
|
||||
//sun shadow map
|
||||
|
|
@ -1016,13 +1015,10 @@ public:
|
|||
static F32 RenderGlowStrength;
|
||||
static bool RenderDepthOfField;
|
||||
static bool RenderDepthOfFieldInEditMode;
|
||||
//<FS:TS> FIRE-16251: Depth of Field does not work underwater
|
||||
static bool FSRenderDepthOfFieldUnderwater;
|
||||
//</FS:TS> FIRE-16251
|
||||
// <FS:Beq> FIRE-16728
|
||||
static bool FSFocusPointLocked;
|
||||
static bool FSFocusPointFollowsPointer;
|
||||
// </FS:Beq>
|
||||
// </FS:Beq>
|
||||
static F32 CameraFocusTransitionTime;
|
||||
static F32 CameraFNumber;
|
||||
static F32 CameraFocalLength;
|
||||
|
|
|
|||
|
|
@ -356,11 +356,12 @@ void RlvSphereEffect::renderPass(LLGLSLShader* pShader, const LLShaderEffectPara
|
|||
gGL.getTexUnit(nDiffuseChannel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
|
||||
}
|
||||
|
||||
S32 nDepthChannel = pShader->enableTexture(LLShaderMgr::DEFERRED_DEPTH, gPipeline.mRT->deferredDepth.getUsage());
|
||||
if (nDepthChannel > -1)
|
||||
{
|
||||
gGL.getTexUnit(nDepthChannel)->bind(&gPipeline.mRT->deferredDepth, TRUE);
|
||||
}
|
||||
// KITTYFIXME
|
||||
//S32 nDepthChannel = pShader->enableTexture(LLShaderMgr::DEFERRED_DEPTH, gPipeline.mRT->deferredDepth.getUsage());
|
||||
//if (nDepthChannel > -1)
|
||||
//{
|
||||
// gGL.getTexUnit(nDepthChannel)->bind(&gPipeline.mRT->deferredDepth, TRUE);
|
||||
//}
|
||||
|
||||
gGL.matrixMode(LLRender::MM_PROJECTION);
|
||||
gGL.pushMatrix();
|
||||
|
|
@ -386,7 +387,7 @@ void RlvSphereEffect::renderPass(LLGLSLShader* pShader, const LLShaderEffectPara
|
|||
gGL.popMatrix();
|
||||
|
||||
pShader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, pParams->m_pSrcBuffer->getUsage());
|
||||
pShader->disableTexture(LLShaderMgr::DEFERRED_DEPTH, gPipeline.mRT->deferredDepth.getUsage());
|
||||
//pShader->disableTexture(LLShaderMgr::DEFERRED_DEPTH, gPipeline.mRT->deferredDepth.getUsage()); // KITTYFIXME
|
||||
|
||||
if (pParams->m_pDstBuffer)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -172,7 +172,6 @@
|
|||
<panel label="Schärfentiefe" name="DOF panel">
|
||||
<check_box label="Schärfentiefe aktivieren (Bereiche außerhalb des Kamerafokus erscheinen unscharf)" name="UseDoF"/>
|
||||
<check_box label="Im Editier-Modus aktivieren" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Unter Wasser aktivieren" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="Schärfentiefe-Fokus folgt Mauszeiger" name="FSFocusPointFollowsPointer" tool_tip="Der Fokus der Schärfentiefe folgt der Maus, ähnlich dem Verhalten bei der Verwendung einer Flycam. In Verbindung mit fixiertem Schärfentiefe-Fokus verwenden."/>
|
||||
<slider label="Kamera-Blendenzahl (k-Wert):" name="CameraFNum" tool_tip="Kamera-Blendenzahl (k-Wert) für die Schärfentiefe" label_width="195" width="409"/>
|
||||
<slider label="Kamera-Brennweite in mm:" name="CameraFocal" tool_tip="Kamera-Brennweite für die Schärfentiefe (in Millimeter)" label_width="195" width="409"/>
|
||||
|
|
|
|||
|
|
@ -1208,16 +1208,6 @@
|
|||
name="RenderDepthOfFieldInEditMode"
|
||||
top_pad="4"
|
||||
width="256"/>
|
||||
<check_box
|
||||
control_name="FSRenderDoFUnderwater"
|
||||
enabled_control="RenderDepthOfField"
|
||||
height="16"
|
||||
initial_value="false"
|
||||
label="Enable while underwater"
|
||||
layout="topleft"
|
||||
name="FSRenderDoFUnderwater"
|
||||
top_pad="4"
|
||||
width="256"/>
|
||||
<check_box
|
||||
control_name="FSFocusPointFollowsPointer"
|
||||
enabled_control="RenderDepthOfField"
|
||||
|
|
|
|||
|
|
@ -121,7 +121,6 @@
|
|||
<panel label="Profondeur de champ" name="DOF panel">
|
||||
<check_box label="Activer la profondeur de champ (Floutera la vue sauf au point de focalisation de la caméra)" name="UseDoF"/>
|
||||
<check_box label="Activer pendant la modification d'objets ou de terrain" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Activer sous l'eau" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="La mise au point de la profondeur de champ suit le pointeur" name="FSFocusPointFollowsPointer" tool_tip="La mise au point de la profondeur de champ (PdC) suivra votre curseur, ce comportement correspond à celui observé lors de l'utilisation de flycam. Utilisation en conjonction avec le verrouillage de la mise au point PdC"/>
|
||||
<slider label="Indice d'ouverture :" name="CameraFNum" tool_tip="Indice d'ouverture de la caméra pour les effets de profondeur"/>
|
||||
<slider label="Distance focale :" name="CameraFocal" tool_tip="Distance focale de la caméra pour les effets de profondeur (en millimètres)"/>
|
||||
|
|
|
|||
|
|
@ -167,7 +167,6 @@
|
|||
<panel label="Profondità di Campo" name="DOF panel">
|
||||
<check_box label="Abilita Profondità di Campo (PdC: sfoca la vista tranne che nella direzione della camera)" name="UseDoF"/>
|
||||
<check_box label="Abilita in modalità Costruzione" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Abilita sott'acqua" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="La messa a fuoco della PdC segue il cursore" name="FSFocusPointFollowsPointer" tool_tip="La messa a fuoco della profondità di campo (PdC) seguirà il tuo mouse, questo comportamento corrisponde a quello visto quando si utilizza flycam. Utilizzare in combinazione con il blocco della messa a fuoco PdC." />
|
||||
<slider label="F-Number Camera" name="CameraFNum" tool_tip="Il valore F è un valore della profondità di campo."/>
|
||||
<slider label="Lunghezza focale (mm):" name="CameraFocal" tool_tip="A che distanza avviene la messa a fuoco (in millimetri)."/>
|
||||
|
|
|
|||
|
|
@ -227,7 +227,6 @@
|
|||
|
||||
<check_box label="被写体深度を利用する(この設定をすると、カメラのフォーカスが当たっていない部分がぼやけます。)" name="UseDoF" />
|
||||
<check_box label="編集モード中でも有効にする" name="RenderDepthOfFieldInEditMode" />
|
||||
<check_box label="水中でも有効にする" name="FSRenderDoFUnderwater" />
|
||||
<check_box label="DOF フォーカスがポインタに追随" name="FSFocusPointFollowsPointer" tool_tip="被写界深度(DOF)のフォーカスが、マウスを追いかけるようになります。この動きはフライカムを使用している時に見られるものに対応しています。「DOF フォーカスのロック」機能と合わせてお使い下さい。" />
|
||||
<slider label="カメラのF値(絞り):" name="CameraFNum" tool_tip="DOF効果を得るためのカメラのF値(絞り)" />
|
||||
<slider label="カメラの焦点距離(mm):" name="CameraFocal" tool_tip="DOF効果を得るための焦点距離(単位はミリ)" />
|
||||
|
|
|
|||
|
|
@ -166,7 +166,6 @@
|
|||
<panel label="Głębia ostrości" name="DOF panel">
|
||||
<check_box label="Włącz głębię ostrości (rozmywaj widok z wyjątkiem miejsca, gdzie skupiona jest kamera)" name="UseDoF"/>
|
||||
<check_box label="Włączaj w trybie budowania" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Włączaj pod wodą" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="Głębia ostrości podąża za kursorem" name="FSFocusPointFollowsPointer" tool_tip="Głębia ostrości (DoF) będzie podążać za kursorem myszy - to zachowanie jest zgodne z tym, co widać podczas korzystania z Flycam. Używaj w połączeniu z blokadą ostrości DoF." />
|
||||
<slider label="Wartość F kamery:" name="CameraFNum" tool_tip="Wartość F kamery dla głębi ostrości"/>
|
||||
<slider label="Ogniskowa (mm):" name="CameraFocal" tool_tip="Ogniskowa dla głębi ostrości (w milimetrach)"/>
|
||||
|
|
|
|||
|
|
@ -169,7 +169,6 @@
|
|||
<panel label="Глубина резкости (DoF)" name="DOF panel">
|
||||
<check_box label="Включить глубину резкости (Это размоет вид за исключением фокусировки камеры.)" name="UseDoF"/>
|
||||
<check_box label="Включить в режиме редактирования" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Разрешить когда под водой" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="Фокус ГР следует за указателем" name="FSFocusPointFollowsPointer" tool_tip="Фокус глубины резкости (DoF) будет следовать за курсором мыши, это поведение соответствует тому, что наблюдается при использовании летающей камеры. Используйте вместе с блокировкой фокуса Глубины резкости"/>
|
||||
<slider label="Номер фокуса камеры:" name="CameraFNum" tool_tip="Номер фокуса камеры - значение для эффекта глубины резкости"/>
|
||||
<slider label="Фокусное расстояние (мм):" name="CameraFocal" tool_tip="Фокусное расстояние камеры для эффекта глубины резкости (в миллиметрах)"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue