# 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.cpp
master
Ansariel 2023-02-03 20:26:22 +01:00
commit d8eecb462a
38 changed files with 172 additions and 316 deletions

View File

@ -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)
{

View File

@ -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

View File

@ -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;
}

View File

@ -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:

View File

@ -190,7 +190,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
}
}
if(features->calculatesAtmospherics)
if(features->calculatesAtmospherics || features->hasGamma || features->isDeferred)
{
if (features->hasWaterFog)
{

View File

@ -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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)));
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);

View File

@ -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
{

View File

@ -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);

View File

@ -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]);

View File

@ -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

View File

@ -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);

View File

@ -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
{

View File

@ -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;

View File

@ -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 ?

View File

@ -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();

View File

@ -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);
{

View File

@ -718,11 +718,6 @@ BOOL LLSpatialGroup::changeLOD()
return TRUE;
}
if (mDistance > mRadius*2.f)
{
return FALSE;
}
}
if (needsUpdate())

View File

@ -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);

View File

@ -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();
}
}

View File

@ -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, &params);
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();

View File

@ -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;

View File

@ -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)
{

View File

@ -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"/>

View File

@ -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"

View File

@ -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)"/>

View File

@ -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)."/>

View File

@ -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効果を得るための焦点距離単位はミリ" />

View File

@ -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)"/>

View File

@ -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="Фокусное расстояние камеры для эффекта глубины резкости (в миллиметрах)"/>