diff options
Diffstat (limited to 'indra/newview')
46 files changed, 513 insertions, 2567 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 3e99bd2551..85262b55a8 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -194,7 +194,6 @@ set(viewer_SOURCE_FILES llfloaterbuyland.cpp llfloatercamera.cpp llfloatercolorpicker.cpp - llfloaterdebugmaterials.cpp llfloaterdeleteenvpreset.cpp llfloaterdestinations.cpp llfloaterdisplayname.cpp @@ -773,7 +772,6 @@ set(viewer_HEADER_FILES llfloaterbuyland.h llfloatercamera.h llfloatercolorpicker.h - llfloaterdebugmaterials.h llfloaterdeleteenvpreset.h llfloaterdestinations.h llfloaterdisplayname.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7deb1284b9..258370d6f3 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8143,7 +8143,7 @@ <key>RenderSpotLightsInNondeferred</key> <map> <key>Comment</key> - <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string> + <string>Whether to support projectors as spotlights when Advanced Lighting Model is disabled</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8314,7 +8314,7 @@ <key>RenderDeferred</key> <map> <key>Comment</key> - <string>Use deferred rendering pipeline.</string> + <string>Use deferred rendering pipeline (Advanced Lighting Model).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8502,7 +8502,7 @@ <key>RenderAutoMaskAlphaNonDeferred</key> <map> <key>Comment</key> - <string>Use alpha masks where appropriate, in the non-deferred (non-'Lighting and Shadows') graphics mode</string> + <string>Use alpha masks where appropriate when not using the Advanced Lighting Model</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8513,7 +8513,7 @@ <key>RenderAutoMaskAlphaDeferred</key> <map> <key>Comment</key> - <string>Use alpha masks where appropriate, in the deferred ('Lighting and Shadows') graphics mode</string> + <string>Use alpha masks where appropriate in the Advanced Lighting Model</string> <key>Persist</key> <integer>1</integer> <key>Type</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index dd87ddb330..ef04ef5ce6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -59,6 +59,7 @@ void main() vec4 pos = vec4(vary_position, 1.0); vec4 diff= diffuseLookup(vary_texcoord0.xy); + diff.rgb = pow(diff.rgb, vec3(2.2)); vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a); vec4 color = diff * col; diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 36433a5827..b6a9417fe7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -43,6 +43,7 @@ void main() float shadow = 1.0; vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color; + color.rgb = pow(color.rgb, vec3(2.2)); color.rgb = fullbrightAtmosTransport(color.rgb); diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 9e194cdcd1..ad50690c02 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -123,13 +123,20 @@ void main() if (spec.a > 0.0) { //vec3 ref = dot(pos+lv, norm); + vec3 h = normalize(lv+npos); + float nh = dot(norm, h); + float nv = dot(norm, npos); + float vh = dot(npos, h); + float sa = nh; + vec3 fres = spec.rgb + pow(1 - dot(h, npos), 5) * (1 - spec.rgb); + float gtdenom = 2 * nh; + float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); - float sa = dot(normalize(lv+npos),norm); if (sa > 0.0) { - sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); - col += da*sa*light_col[i].rgb*spec.rgb; + vec3 scol = (fres * texture2D(lightFunc, vec2(nh, spec.a)).r * gt) / (nh * da); + col += lit*scol*light_col[i].rgb; } } diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index bff87cb6aa..53e5a228fa 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -70,6 +70,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float det = max(1.0-lod/(proj_lod*0.5), 0.0); @@ -85,6 +87,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); float det = min(lod/(proj_lod*0.5), 1.0); @@ -102,6 +106,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float d = dot(dist,dist); diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 6e5ac8317b..03b036375b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -107,11 +107,20 @@ void main() vec4 spec = texture2DRect(specularRect, frag.xy); if (spec.a > 0.0) { - float sa = dot(normalize(lv-normalize(pos)),norm); + vec3 npos = -normalize(pos); + vec3 h = normalize(lv+npos); + float nh = dot(norm, h); + float nv = dot(norm, npos); + float vh = dot(npos, h); + float sa = nh; + vec3 fres = spec.rgb + pow(1 - dot(h, npos), 5) * (1 - spec.rgb); + float gtdenom = 2 * nh; + float gt = max(0,(min(gtdenom * nv / vh, gtdenom * da / vh))); + if (sa > 0.0) { - sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); - col += da*sa*color.rgb*spec.rgb; + vec3 scol = (fres * texture2D(lightFunc, vec2(nh, spec.a)).r * gt) / (nh * da); + col += lit*scol*color.rgb; } } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index bf362e21a4..3f57b006cd 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -37,6 +37,7 @@ uniform mat4 inv_proj; uniform vec2 screen_res; uniform float max_cof; uniform float res_scale; +uniform float global_gamma; VARYING vec2 vary_fragcoord; @@ -123,6 +124,6 @@ void main() diff /= w; } - + diff.rgb = pow(diff.rgb, vec3(1.0/global_gamma)); frag_color = diff; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl index eb5beeef39..c891c4e445 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl @@ -35,12 +35,13 @@ uniform sampler2DRect diffuseRect; uniform sampler2D bloomMap; uniform vec2 screen_res; +uniform float global_gamma; VARYING vec2 vary_fragcoord; void main() { vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy); - + diff.rgb = pow(diff.rgb, vec3(1.0/global_gamma)); vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res); frag_color = diff + bloom; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 14eaafeb68..87cdf1026f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -77,6 +77,11 @@ vec3 vary_AtmosAttenuation; uniform mat4 inv_proj; uniform vec2 screen_res; +vec3 samplesRGB(vec3 color) +{ + return pow(color, vec3(2.2)); +} + vec4 getPosition_d(vec2 pos_screen, float depth) { vec2 sc = pos_screen.xy*2.0; @@ -101,22 +106,21 @@ vec3 getPositionEye() } vec3 getSunlitColor() { - return vary_SunlitColor; + return samplesRGB(vary_SunlitColor) * 4.4; } vec3 getAmblitColor() { - return vary_AmblitColor; + return samplesRGB((vary_AmblitColor)) * 2.2; } vec3 getAdditiveColor() { - return vary_AdditiveColor; + return samplesRGB(vary_AdditiveColor) * 2.2; } vec3 getAtmosAttenuation() { return vary_AtmosAttenuation; } - void setPositionEye(vec3 v) { vary_PositionEye = v; @@ -310,7 +314,7 @@ void main() //add environmentmap vec3 env_vec = env_mat * refnormpersp; - col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, + col = mix(col.rgb, samplesRGB(textureCube(environmentMap, env_vec).rgb) * 2.2, max(spec.a-diffuse.a*2.0, 0.0)); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index cca63872de..9bdf87678f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -72,6 +72,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float det = max(1.0-lod/(proj_lod*0.5), 0.0); @@ -87,6 +89,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); float det = min(lod/(proj_lod*0.5), 1.0); @@ -104,6 +108,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float d = dot(dist,dist); diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl index 6c34643aab..9543be562b 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl @@ -37,6 +37,8 @@ vec3 fullbrightScaleSoftClip(vec3 light); VARYING vec4 vertex_color; VARYING vec2 vary_texcoord0; +uniform float texture_gamma; + void fullbright_lighting() { vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color; @@ -45,7 +47,7 @@ void fullbright_lighting() { discard; } - + color.rgb = pow(color.rgb, vec3(texture_gamma)); color.rgb = fullbrightAtmosTransport(color.rgb); color.rgb = fullbrightScaleSoftClip(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 12706f130b..359864556d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -149,6 +149,7 @@ void main() } vec4 diff = diffuseLookup(vary_texcoord0.xy); + diff.rgb = pow(diff.rgb, vec3(2.2)); vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a); vec4 color = diff * col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 5621e47ab7..695887c5ff 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -71,6 +71,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float det = max(1.0-lod/(proj_lod*0.5), 0.0); @@ -86,6 +88,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); float det = min(lod/(proj_lod*0.5), 1.0); @@ -103,6 +107,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float d = dot(dist,dist); diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 457189b48e..bf4c476138 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -79,6 +79,11 @@ vec3 vary_AmblitColor; vec3 vary_AdditiveColor; vec3 vary_AtmosAttenuation; +vec3 samplesRGB(vec3 color) +{ + return pow(color, vec3(2.2)); +} + vec4 getPosition_d(vec2 pos_screen, float depth) { vec2 sc = pos_screen.xy*2.0; @@ -103,15 +108,15 @@ vec3 getPositionEye() } vec3 getSunlitColor() { - return vary_SunlitColor; + return samplesRGB(vary_SunlitColor) * 4.4; } vec3 getAmblitColor() { - return vary_AmblitColor; + return samplesRGB(vary_AmblitColor) * 2.2; } vec3 getAdditiveColor() { - return vary_AdditiveColor; + return samplesRGB(vary_AdditiveColor) * 2.2; } vec3 getAtmosAttenuation() { @@ -318,7 +323,7 @@ void main() //add environmentmap vec3 env_vec = env_mat * refnormpersp; - col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, + col = mix(col.rgb, samplesRGB(textureCube(environmentMap, env_vec).rgb) * 2.2, max(spec.a-diffuse.a*2.0, 0.0)); } diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 6d6ad6d565..525dd32106 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -71,6 +71,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float det = max(1.0-lod/(proj_lod*0.5), 0.0); @@ -86,6 +88,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); float det = min(lod/(proj_lod*0.5), 1.0); @@ -103,6 +107,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); + ret.rgb = pow(ret.rgb, vec3(2.2)); + vec2 dist = tc-vec2(0.5); float d = dot(dist,dist); diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl index 765b0927c3..dd7de9f123 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl @@ -27,7 +27,7 @@ VARYING vec3 vary_SunlitColor; VARYING vec3 vary_AdditiveColor; VARYING vec3 vary_AtmosAttenuation; - +uniform float global_gamma; vec3 getSunlitColor() { return vec3(0,0,0); @@ -38,7 +38,7 @@ vec3 getAmblitColor() } vec3 getAdditiveColor() { - return vary_AdditiveColor; + return pow(vary_AdditiveColor, vec3(global_gamma)) * global_gamma; } vec3 getAtmosAttenuation() { diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl index 99dbee15ee..61f3088648 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl @@ -33,18 +33,20 @@ vec3 sunlit_color; vec3 amblit_color; vec3 position_eye; +uniform float global_gamma; + vec3 getSunlitColor() { - return sunlit_color; + return pow(sunlit_color, vec3(global_gamma)) * global_gamma; } vec3 getAmblitColor() { - return amblit_color; + return pow(amblit_color, vec3(global_gamma)) * global_gamma; } vec3 getAdditiveColor() { - return additive_color; + return pow(additive_color, vec3(global_gamma)) * global_gamma; } vec3 getAtmosAttenuation() { diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 313b310e1e..33615eb075 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -240,6 +240,12 @@ void LLDrawPoolAlpha::render(S32 pass) { fullbright_shader->bind(); fullbright_shader->setMinimumAlpha(0.33f); + if (LLPipeline::sRenderingHUDs || !LLPipeline::sRenderDeferred) + { + fullbright_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0f); + } else { + fullbright_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); + } } pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); //LLGLSLShader::bindNoShader(); @@ -423,6 +429,17 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) if (use_shaders) { target_shader = fullbright_shader; + if (LLPipeline::sRenderDeferred) + { + if (params.mFace->getViewerObject()->isHUDAttachment()) + { + target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0); + } else { + target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2); + } + } else { + target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0); + } } else { diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index a264eae302..718133ba29 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -153,7 +153,7 @@ void LLStandardBumpmap::addstandard() gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mLabel = label; gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage = LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id)); - gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP) ; + gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP); gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setLoadedCallback(LLBumpImageList::onSourceStandardLoaded, 0, TRUE, FALSE, NULL, NULL ); gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->forceToSaveRawImage(0) ; LLStandardBumpmap::sStandardBumpmapCount++; diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 4f6eaa5a5b..9dfd69583e 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -80,7 +80,7 @@ LLDrawPoolWater::LLDrawPoolWater() : mWaterImagep->setNoDelete(); mOpaqueWaterImagep = LLViewerTextureManager::getFetchedTexture(OPAQUE_WATER_TEXTURE); llassert(mOpaqueWaterImagep); - mWaterNormp = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL); + mWaterNormp = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL, TRUE, LLViewerTexture::BOOST_BUMP); mWaterNormp->setNoDelete(); restoreGL(); @@ -563,7 +563,7 @@ void LLDrawPoolWater::shade() // change mWaterNormp if needed if (mWaterNormp->getID() != param_mgr->getNormalMapID()) { - mWaterNormp = LLViewerTextureManager::getFetchedTexture(param_mgr->getNormalMapID()); + mWaterNormp = LLViewerTextureManager::getFetchedTexture(param_mgr->getNormalMapID(), TRUE, LLViewerTexture::BOOST_BUMP); } mWaterNormp->addTextureStats(1024.f*1024.f); diff --git a/indra/newview/llfloaterdebugmaterials.cpp b/indra/newview/llfloaterdebugmaterials.cpp deleted file mode 100644 index c9f15a9c35..0000000000 --- a/indra/newview/llfloaterdebugmaterials.cpp +++ /dev/null @@ -1,1245 +0,0 @@ -/** -* @file llfloaterdebugmaterials.cpp -* @brief Implementation of llfloaterdebugmaterials -* @author Stinson@lindenlab.com -* -* $LicenseInfo:firstyear=2012&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2012, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterdebugmaterials.h" - -#include <string> -#include <vector> -#include <map> - -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> -#include <boost/function.hpp> -#include <boost/signals2.hpp> - -#include "llagent.h" -#include "llbutton.h" -#include "llcolorswatch.h" -#include "llenvmanager.h" -#include "llfloater.h" -#include "llfloaterreg.h" -#include "llfontgl.h" -#include "llhttpclient.h" -#include "lllineeditor.h" -#include "llmaterialid.h" -#include "llresmgr.h" -#include "llscrolllistcell.h" -#include "llscrolllistctrl.h" -#include "llscrolllistitem.h" -#include "llsd.h" -#include "llsdserialize.h" -#include "llselectmgr.h" -#include "llspinctrl.h" -#include "llstring.h" -#include "llstyle.h" -#include "lltextbase.h" -#include "lltexturectrl.h" -#include "lltextvalidate.h" -#include "llthread.h" -#include "lluicolortable.h" -#include "lluictrl.h" -#include "lluuid.h" -#include "llviewerobject.h" -#include "llviewerobjectlist.h" -#include "llviewerparcelmgr.h" -#include "llviewerregion.h" -#include "v4color.h" -#include "v4coloru.h" - -#define MATERIALS_CAPABILITY_NAME "RenderMaterials" - -#define VIEWABLE_OBJECTS_REGION_ID_FIELD "regionId" -#define VIEWABLE_OBJECTS_OBJECT_ID_FIELD "objectId" -#define VIEWABLE_OBJECTS_MATERIAL_ID_FIELD "materialId" - -BOOL LLFloaterDebugMaterials::postBuild() -{ - mStatusText = findChild<LLTextBase>("material_status"); - llassert(mStatusText != NULL); - - mGetButton = findChild<LLButton>("get_button"); - llassert(mGetButton != NULL); - mGetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetClicked, this)); - - mParsingStatusText = findChild<LLTextBase>("loading_status"); - llassert(mParsingStatusText != NULL); - - mGetNormalMapScrollList = findChild<LLScrollListCtrl>("get_normal_map_scroll_list"); - llassert(mGetNormalMapScrollList != NULL); - mGetNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - - mGetSpecularMapScrollList = findChild<LLScrollListCtrl>("get_specular_map_scroll_list"); - llassert(mGetSpecularMapScrollList != NULL); - mGetSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - - mGetOtherDataScrollList = findChild<LLScrollListCtrl>("get_other_data_scroll_list"); - llassert(mGetOtherDataScrollList != NULL); - mGetOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - - mNormalMap = findChild<LLTextureCtrl>("normal_map"); - llassert(mNormalMap != NULL); - - mNormalMapOffsetX = findChild<LLSpinCtrl>("normal_map_offset_x"); - llassert(mNormalMapOffsetX != NULL); - - mNormalMapOffsetY = findChild<LLSpinCtrl>("normal_map_offset_y"); - llassert(mNormalMapOffsetY != NULL); - - mNormalMapRepeatX = findChild<LLSpinCtrl>("normal_map_repeat_x"); - llassert(mNormalMapRepeatX != NULL); - - mNormalMapRepeatY = findChild<LLSpinCtrl>("normal_map_repeat_y"); - llassert(mNormalMapRepeatY != NULL); - - mNormalMapRotation = findChild<LLSpinCtrl>("normal_map_rotation"); - llassert(mNormalMapRotation != NULL); - - mSpecularMap = findChild<LLTextureCtrl>("specular_map"); - llassert(mSpecularMap != NULL); - - mSpecularMapOffsetX = findChild<LLSpinCtrl>("specular_map_offset_x"); - llassert(mSpecularMapOffsetX != NULL); - - mSpecularMapOffsetY = findChild<LLSpinCtrl>("specular_map_offset_y"); - llassert(mSpecularMapOffsetY != NULL); - - mSpecularMapRepeatX = findChild<LLSpinCtrl>("specular_map_repeat_x"); - llassert(mSpecularMapRepeatX != NULL); - - mSpecularMapRepeatY = findChild<LLSpinCtrl>("specular_map_repeat_y"); - llassert(mSpecularMapRepeatY != NULL); - - mSpecularMapRotation = findChild<LLSpinCtrl>("specular_map_rotation"); - llassert(mSpecularMapRotation != NULL); - - mSpecularColor = findChild<LLColorSwatchCtrl>("specular_color"); - llassert(mSpecularColor != NULL); - - mSpecularColorAlpha = findChild<LLSpinCtrl>("specular_color_alpha"); - llassert(mSpecularColorAlpha != NULL); - - mSpecularExponent = findChild<LLLineEditor>("specular_exponent"); - llassert(mSpecularExponent != NULL); - mSpecularExponent->setPrevalidate(LLTextValidate::validateInt); - mSpecularExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - - mEnvironmentExponent = findChild<LLLineEditor>("environment_exponent"); - llassert(mEnvironmentExponent != NULL); - mEnvironmentExponent->setPrevalidate(LLTextValidate::validateInt); - mEnvironmentExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - - mAlphaMaskCutoff = findChild<LLLineEditor>("alpha_mask_cutoff"); - llassert(mAlphaMaskCutoff != NULL); - mAlphaMaskCutoff->setPrevalidate(LLTextValidate::validateInt); - mAlphaMaskCutoff->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - - mDiffuseAlphaMode = findChild<LLLineEditor>("diffuse_alpha_mode"); - llassert(mDiffuseAlphaMode != NULL); - mDiffuseAlphaMode->setPrevalidate(LLTextValidate::validateInt); - mDiffuseAlphaMode->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - - mPutSetButton = findChild<LLButton>("put_set_button"); - llassert(mPutSetButton != NULL); - mPutSetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutSetClicked, this)); - - mPutClearButton = findChild<LLButton>("put_clear_button"); - llassert(mPutClearButton != NULL); - mPutClearButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutClearClicked, this)); - - LLButton* resetPutValuesButton = findChild<LLButton>("reset_put_values_button"); - llassert(resetPutValuesButton != NULL); - resetPutValuesButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onResetPutValuesClicked, this)); - - mPutScrollList = findChild<LLScrollListCtrl>("put_scroll_list"); - llassert(mPutScrollList != NULL); - - mQueryViewableObjectsButton = findChild<LLButton>("query_viewable_objects_button"); - llassert(mQueryViewableObjectsButton != NULL); - mQueryViewableObjectsButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onQueryVisibleObjectsClicked, this)); - - mQueryStatusText = findChild<LLTextBase>("query_status"); - llassert(mQueryStatusText != NULL); - - mViewableObjectsScrollList = findChild<LLScrollListCtrl>("viewable_objects_scroll_list"); - llassert(mViewableObjectsScrollList != NULL); - mViewableObjectsScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange, this)); - - mPostButton = findChild<LLButton>("post_button"); - llassert(mPostButton != NULL); - mPostButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostClicked, this)); - - mPostNormalMapScrollList = findChild<LLScrollListCtrl>("post_normal_map_scroll_list"); - llassert(mPostNormalMapScrollList != NULL); - mPostNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - - mPostSpecularMapScrollList = findChild<LLScrollListCtrl>("post_specular_map_scroll_list"); - llassert(mPostSpecularMapScrollList != NULL); - mPostSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - - mPostOtherDataScrollList = findChild<LLScrollListCtrl>("post_other_data_scroll_list"); - llassert(mPostOtherDataScrollList != NULL); - mPostOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - - mDefaultSpecularColor = LLUIColorTable::instance().getColor("White"); - - mWarningColor = LLUIColorTable::instance().getColor("MaterialWarningColor"); - mErrorColor = LLUIColorTable::instance().getColor("MaterialErrorColor"); - - setState(kNoRegion); - - return LLFloater::postBuild(); -} - -void LLFloaterDebugMaterials::onOpen(const LLSD& pKey) -{ - LLFloater::onOpen(pKey); - - if (!mRegionCrossConnection.connected()) - { - mRegionCrossConnection = LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this)); - } - - if (!mTeleportFailedConnection.connected()) - { - mTeleportFailedConnection = LLViewerParcelMgr::getInstance()->setTeleportFailedCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this)); - } - - if (!mSelectionUpdateConnection.connected()) - { - mSelectionUpdateConnection = LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterDebugMaterials::onInWorldSelectionChange, this)); - } - - checkRegionMaterialStatus(); - resetObjectEditInputs(); - clearGetResults(); - clearViewableObjectsResults(); - clearPostResults(); -} - -void LLFloaterDebugMaterials::onClose(bool pIsAppQuitting) -{ - resetObjectEditInputs(); - clearGetResults(); - clearViewableObjectsResults(); - clearPostResults(); - - if (mSelectionUpdateConnection.connected()) - { - mSelectionUpdateConnection.disconnect(); - } - - if (mTeleportFailedConnection.connected()) - { - mTeleportFailedConnection.disconnect(); - } - - if (mRegionCrossConnection.connected()) - { - mRegionCrossConnection.disconnect(); - } - - LLFloater::onClose(pIsAppQuitting); -} - -void LLFloaterDebugMaterials::draw() -{ - if (mNextUnparsedQueryDataIndex >= 0) - { - parseQueryViewableObjects(); - } - if (LLSelectMgr::instance().getSelection().notNull()) - { - refreshObjectEdit(); - } - LLFloater::draw(); -} - -LLFloaterDebugMaterials::LLFloaterDebugMaterials(const LLSD& pParams) - : LLFloater(pParams), - mStatusText(NULL), - mGetButton(NULL), - mParsingStatusText(NULL), - mGetNormalMapScrollList(NULL), - mGetSpecularMapScrollList(NULL), - mGetOtherDataScrollList(NULL), - mNormalMap(NULL), - mNormalMapOffsetX(NULL), - mNormalMapOffsetY(NULL), - mNormalMapRepeatX(NULL), - mNormalMapRepeatY(NULL), - mNormalMapRotation(NULL), - mSpecularMap(NULL), - mSpecularMapOffsetX(NULL), - mSpecularMapOffsetY(NULL), - mSpecularMapRepeatX(NULL), - mSpecularMapRepeatY(NULL), - mSpecularMapRotation(NULL), - mSpecularColor(NULL), - mSpecularColorAlpha(NULL), - mSpecularExponent(NULL), - mEnvironmentExponent(NULL), - mAlphaMaskCutoff(NULL), - mDiffuseAlphaMode(NULL), - mPutSetButton(NULL), - mPutClearButton(NULL), - mPutScrollList(NULL), - mQueryViewableObjectsButton(NULL), - mQueryStatusText(NULL), - mViewableObjectsScrollList(NULL), - mPostButton(NULL), - mPostNormalMapScrollList(NULL), - mPostSpecularMapScrollList(NULL), - mPostOtherDataScrollList(NULL), - mState(kNoRegion), - mWarningColor(), - mErrorColor(), - mRegionCrossConnection(), - mTeleportFailedConnection(), - mSelectionUpdateConnection(), - mNextUnparsedQueryDataIndex(-1) -{ -} - -LLFloaterDebugMaterials::~LLFloaterDebugMaterials() -{ -} - -void LLFloaterDebugMaterials::onGetClicked() -{ - requestGetMaterials(); -} - -void LLFloaterDebugMaterials::onValueEntered(LLUICtrl* pUICtrl) -{ - LLLineEditor *pLineEditor = static_cast<LLLineEditor *>(pUICtrl); - llassert(pLineEditor != NULL); - - const std::string &valueString = pLineEditor->getText(); - - S32 intValue = 0; - bool doResetValue = (!valueString.empty() && !LLStringUtil::convertToS32(valueString, intValue)); - - if (doResetValue) - { - LL_WARNS("debugMaterials") << "cannot parse string '" << valueString << "' to an S32 value" <<LL_ENDL; - LLSD value = static_cast<LLSD::Integer>(intValue); - pLineEditor->setValue(value); - } -} - -void LLFloaterDebugMaterials::onPutSetClicked() -{ - requestPutMaterials(true); -} - -void LLFloaterDebugMaterials::onPutClearClicked() -{ - requestPutMaterials(false); -} - -void LLFloaterDebugMaterials::onResetPutValuesClicked() -{ - resetObjectEditInputs(); -} - -void LLFloaterDebugMaterials::onQueryVisibleObjectsClicked() -{ - clearViewableObjectsResults(); - setUnparsedQueryData(); -} - -void LLFloaterDebugMaterials::onPostClicked() -{ - clearPostResults(); - - std::vector<LLScrollListItem*> selectedItems = mViewableObjectsScrollList->getAllSelected(); - if (!selectedItems.empty()) - { - for (std::vector<LLScrollListItem*>::const_iterator selectedItemIter = selectedItems.begin(); - selectedItemIter != selectedItems.end(); ++selectedItemIter) - { - const LLScrollListItem* selectedItem = *selectedItemIter; - const LLSD& selectedItemValue = selectedItem->getValue(); - llassert(selectedItemValue.isMap()); - - llassert(selectedItemValue.has(VIEWABLE_OBJECTS_REGION_ID_FIELD)); - llassert(selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).isUUID()); - const LLUUID& region_id = selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).asUUID(); - - llassert(selectedItemValue.has(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD)); - llassert(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).isBinary()); - const LLMaterialID material_id(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).asBinary()); - - LLMaterialMgr::instance().get(region_id, material_id, boost::bind(&LLFloaterDebugMaterials::onPostMaterial, _1, _2)); - } - } -} - -void LLFloaterDebugMaterials::onRegionCross() -{ - checkRegionMaterialStatus(); - clearGetResults(); - clearViewableObjectsResults(); - clearPostResults(); -} - -void LLFloaterDebugMaterials::onInWorldSelectionChange() -{ - updateControls(); -} - -void LLFloaterDebugMaterials::onGetScrollListSelectionChange(LLUICtrl* pUICtrl) -{ - LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl); - llassert(scrollListCtrl != NULL); - - if (scrollListCtrl != mGetNormalMapScrollList) - { - mGetNormalMapScrollList->deselectAllItems(TRUE); - } - if (scrollListCtrl != mGetSpecularMapScrollList) - { - mGetSpecularMapScrollList->deselectAllItems(TRUE); - } - if (scrollListCtrl != mGetOtherDataScrollList) - { - mGetOtherDataScrollList->deselectAllItems(TRUE); - } - - std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected(); - if (!selectedItems.empty()) - { - llassert(selectedItems.size() == 1); - LLScrollListItem* selectedItem = selectedItems.front(); - - llassert(selectedItem != NULL); - const LLSD& selectedIdValue = selectedItem->getValue(); - - if (scrollListCtrl != mGetNormalMapScrollList) - { - mGetNormalMapScrollList->selectByValue(selectedIdValue); - mGetNormalMapScrollList->scrollToShowSelected(); - } - if (scrollListCtrl != mGetSpecularMapScrollList) - { - mGetSpecularMapScrollList->selectByValue(selectedIdValue); - mGetSpecularMapScrollList->scrollToShowSelected(); - } - if (scrollListCtrl != mGetOtherDataScrollList) - { - mGetOtherDataScrollList->selectByValue(selectedIdValue); - mGetOtherDataScrollList->scrollToShowSelected(); - } - } -} - -void LLFloaterDebugMaterials::onPostScrollListSelectionChange(LLUICtrl* pUICtrl) -{ - LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl); - llassert(scrollListCtrl != NULL); - - if (scrollListCtrl != mPostNormalMapScrollList) - { - mPostNormalMapScrollList->deselectAllItems(TRUE); - } - if (scrollListCtrl != mPostSpecularMapScrollList) - { - mPostSpecularMapScrollList->deselectAllItems(TRUE); - } - if (scrollListCtrl != mPostOtherDataScrollList) - { - mPostOtherDataScrollList->deselectAllItems(TRUE); - } - - std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected(); - if (!selectedItems.empty()) - { - llassert(selectedItems.size() == 1); - LLScrollListItem* selectedItem = selectedItems.front(); - - llassert(selectedItem != NULL); - const LLSD& selectedIdValue = selectedItem->getValue(); - - if (scrollListCtrl != mPostNormalMapScrollList) - { - mPostNormalMapScrollList->selectByValue(selectedIdValue); - mPostNormalMapScrollList->scrollToShowSelected(); - } - if (scrollListCtrl != mPostSpecularMapScrollList) - { - mPostSpecularMapScrollList->selectByValue(selectedIdValue); - mPostSpecularMapScrollList->scrollToShowSelected(); - } - if (scrollListCtrl != mPostOtherDataScrollList) - { - mPostOtherDataScrollList->selectByValue(selectedIdValue); - mPostOtherDataScrollList->scrollToShowSelected(); - } - } -} - -void LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange() -{ - updateControls(); -} - -void LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus(LLUUID regionId) -{ - checkRegionMaterialStatus(regionId); -} - -void LLFloaterDebugMaterials::onDeferredRequestGetMaterials(LLUUID regionId) -{ - requestGetMaterials(regionId); -} - -void LLFloaterDebugMaterials::onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet) -{ - requestPutMaterials(regionId, pIsDoSet); -} - -void LLFloaterDebugMaterials::checkRegionMaterialStatus() -{ - LLViewerRegion *region = gAgent.getRegion(); - - if (region == NULL) - { - LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; - setState(kNoRegion); - } - else if (!region->capabilitiesReceived()) - { - setState(kCapabilitiesLoading); - region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus, this, region->getRegionID())); - } - else - { - std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - - if (capURL.empty()) - { - LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME - << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; - setState(kNotEnabled); - } - else - { - setState(kReady); - } - } -} - -void LLFloaterDebugMaterials::checkRegionMaterialStatus(const LLUUID& regionId) -{ - const LLViewerRegion *region = gAgent.getRegion(); - - if ((region != NULL) && (region->getRegionID() == regionId)) - { - checkRegionMaterialStatus(); - } -} - -void LLFloaterDebugMaterials::requestGetMaterials() -{ - LLViewerRegion *region = gAgent.getRegion(); - - if (region == NULL) - { - LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; - setState(kNoRegion); - } - else if (!region->capabilitiesReceived()) - { - setState(kCapabilitiesLoading); - region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestGetMaterials, this, region->getRegionID())); - } - else - { - std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - - if (capURL.empty()) - { - LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME - << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; - setState(kNotEnabled); - } - else - { - setState(kReady); - LLMaterialMgr::instance().getAll(region->getRegionID(), boost::bind(&LLFloaterDebugMaterials::onGetMaterials, _1, _2)); - } - } -} - -void LLFloaterDebugMaterials::requestGetMaterials(const LLUUID& regionId) -{ - const LLViewerRegion *region = gAgent.getRegion(); - - if ((region != NULL) && (region->getRegionID() == regionId)) - { - requestGetMaterials(); - } -} - -void LLFloaterDebugMaterials::requestPutMaterials(bool pIsDoSet) -{ - LLViewerRegion *region = gAgent.getRegion(); - - if (region == NULL) - { - LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; - setState(kNoRegion); - } - else if (!region->capabilitiesReceived()) - { - setState(kCapabilitiesLoading); - region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestPutMaterials, this, region->getRegionID(), pIsDoSet)); - } - else - { - std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - - if (capURL.empty()) - { - LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME - << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; - setState(kNotEnabled); - } - else - { - setState(kReady); - - LLMaterial material = (pIsDoSet) ? getMaterial() : LLMaterial::null; - - LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); - for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin(); - objectIter != selectionHandle->valid_end(); ++objectIter) - { - LLSelectNode* objectNode = *objectIter; - LLViewerObject* viewerObject = objectNode->getObject(); - - if (viewerObject != NULL) - { - const LLViewerRegion* viewerRegion = viewerObject->getRegion(); - if (region != viewerRegion) - { - LL_ERRS("debugMaterials") << "cannot currently edit an object on a different region through the debug materials floater" << llendl; - } - S32 numTEs = llmin(static_cast<S32>(viewerObject->getNumTEs()), viewerObject->getNumFaces()); - for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex) - { - if (objectNode->isTESelected(curTEIndex)) - { - LLMaterialMgr::instance().put(viewerObject->getID(), curTEIndex, material); - } - } - } - } - } - } -} - -void LLFloaterDebugMaterials::requestPutMaterials(const LLUUID& regionId, bool pIsDoSet) -{ - const LLViewerRegion *region = gAgent.getRegion(); - - if ((region != NULL) && (region->getRegionID() == regionId)) - { - requestPutMaterials(pIsDoSet); - } -} - -void LLFloaterDebugMaterials::parseQueryViewableObjects() -{ - llassert(mNextUnparsedQueryDataIndex >= 0); - - if (mNextUnparsedQueryDataIndex >= 0) - { - LLScrollListCell::Params cellParams; - LLScrollListItem::Params rowParams; - - S32 numViewerObjects = gObjectList.getNumObjects(); - S32 viewerObjectIndex = mNextUnparsedQueryDataIndex; - for (S32 currentParseCount = 0; - (currentParseCount < 10) && (viewerObjectIndex < numViewerObjects); - ++currentParseCount, ++viewerObjectIndex) - { - const LLViewerObject *viewerObject = gObjectList.getObject(viewerObjectIndex); - if ((viewerObject != NULL) && !viewerObject->isDead()) - { - U8 objectNumTEs = viewerObject->getNumTEs(); - - if (objectNumTEs > 0U) - { - const LLUUID& objectId = viewerObject->getID(); - U32 objectLocalId = viewerObject->getLocalID(); - const LLViewerRegion* objectRegion = viewerObject->getRegion(); - - for (U8 curTEIndex = 0U; curTEIndex < objectNumTEs; ++curTEIndex) - { - const LLTextureEntry* objectTE = viewerObject->getTE(curTEIndex); - llassert(objectTE != NULL); - const LLMaterialID& objectMaterialID = objectTE->getMaterialID(); - if (!objectMaterialID.isNull()) - { - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "object_id"; - cellParams.value = objectId.asString(); - rowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - cellParams.column = "region"; - cellParams.value = ((objectRegion == NULL) ? "<null>" : objectRegion->getName()); - rowParams.columns.add(cellParams); - - cellParams.column = "local_id"; - cellParams.value = llformat("%d", objectLocalId); - rowParams.columns.add(cellParams); - - cellParams.column = "face_index"; - cellParams.value = llformat("%u", static_cast<unsigned int>(curTEIndex)); - rowParams.columns.add(cellParams); - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "material_id"; - cellParams.value = objectMaterialID.asString(); - rowParams.columns.add(cellParams); - - LLSD rowValue = LLSD::emptyMap(); - rowValue[VIEWABLE_OBJECTS_REGION_ID_FIELD] = objectRegion->getRegionID(); - rowValue[VIEWABLE_OBJECTS_OBJECT_ID_FIELD] = objectId; - rowValue[VIEWABLE_OBJECTS_MATERIAL_ID_FIELD] = objectMaterialID.asLLSD(); - - rowParams.value = rowValue; - - mViewableObjectsScrollList->addRow(rowParams); - } - } - } - } - } - - if (viewerObjectIndex < numViewerObjects) - { - mNextUnparsedQueryDataIndex = viewerObjectIndex; - updateQueryParsingStatus(); - } - else - { - clearUnparsedQueryData(); - } - } -} - -void LLFloaterDebugMaterials::onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials) -{ - LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials"); - if (!instancep) - { - return; - } - - LLViewerRegion* regionp = gAgent.getRegion(); - if ( (!regionp) || (regionp->getRegionID() != region_id) ) - { - return; - } - - LLScrollListCell::Params cellParams; - LLScrollListItem::Params normalMapRowParams; - LLScrollListItem::Params specularMapRowParams; - LLScrollListItem::Params otherDataRowParams; - - instancep->clearGetResults(); - for (LLMaterialMgr::material_map_t::const_iterator itMaterial = materials.begin(); itMaterial != materials.end(); ++itMaterial) - { - const LLMaterialID& material_id = itMaterial->first; - const LLMaterialPtr material = itMaterial->second; - - F32 x, y; - - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "id"; - cellParams.value = material_id.asString(); - normalMapRowParams.columns.add(cellParams); - specularMapRowParams.columns.add(cellParams); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "normal_map_list_map"; - cellParams.value = material->getNormalID().asString(); - normalMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - material->getNormalOffset(x, y); - cellParams.column = "normal_map_list_offset_x"; - cellParams.value = llformat("%f", x); - normalMapRowParams.columns.add(cellParams); - cellParams.column = "normal_map_list_offset_y"; - cellParams.value = llformat("%f", y); - normalMapRowParams.columns.add(cellParams); - - material->getNormalRepeat(x, y); - cellParams.column = "normal_map_list_repeat_x"; - cellParams.value = llformat("%f", x); - normalMapRowParams.columns.add(cellParams); - cellParams.column = "normal_map_list_repeat_y"; - cellParams.value = llformat("%f", y); - normalMapRowParams.columns.add(cellParams); - - cellParams.column = "normal_map_list_rotation"; - cellParams.value = llformat("%f", material->getNormalRotation()); - normalMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "specular_map_list_map"; - cellParams.value = material->getSpecularID().asString(); - specularMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - material->getSpecularOffset(x, y); - cellParams.column = "specular_map_list_offset_x"; - cellParams.value = llformat("%f", x); - specularMapRowParams.columns.add(cellParams); - cellParams.column = "specular_map_list_offset_y"; - cellParams.value = llformat("%f", y); - specularMapRowParams.columns.add(cellParams); - - material->getSpecularRepeat(x, y); - cellParams.column = "specular_map_list_repeat_x"; - cellParams.value = llformat("%f", x); - specularMapRowParams.columns.add(cellParams); - - cellParams.column = "specular_map_list_repeat_y"; - cellParams.value = llformat("%f", y); - specularMapRowParams.columns.add(cellParams); - - cellParams.column = "specular_map_list_rotation"; - cellParams.value = llformat("%f", material->getSpecularRotation()); - specularMapRowParams.columns.add(cellParams); - - const LLColor4U& specularColor = material->getSpecularLightColor(); - cellParams.column = "specular_color"; - cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0], - specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "specular_exponent"; - cellParams.value = llformat("%d", material->getSpecularLightExponent()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "env_intensity"; - cellParams.value = llformat("%d", material->getEnvironmentIntensity()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "alpha_mask_cutoff"; - cellParams.value = llformat("%d", material->getAlphaMaskCutoff()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "diffuse_alpha_mode"; - cellParams.value = llformat("%d", material->getDiffuseAlphaMode()); - otherDataRowParams.columns.add(cellParams); - - normalMapRowParams.value = cellParams.value; - specularMapRowParams.value = cellParams.value; - otherDataRowParams.value = cellParams.value; - - instancep->mGetNormalMapScrollList->addRow(normalMapRowParams); - instancep->mGetSpecularMapScrollList->addRow(specularMapRowParams); - instancep->mGetOtherDataScrollList->addRow(otherDataRowParams); - } -} - -void LLFloaterDebugMaterials::onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp) -{ - LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials"); - if ( (!instancep) || (!materialp.get()) ) - { - return; - } - - LLScrollListCell::Params cellParams; - LLScrollListItem::Params normalMapRowParams; - LLScrollListItem::Params specularMapRowParams; - LLScrollListItem::Params otherDataRowParams; - - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "id"; - cellParams.value = material_id.asString(); - normalMapRowParams.columns.add(cellParams); - specularMapRowParams.columns.add(cellParams); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "normal_map_list_map"; - cellParams.value = materialp->getNormalID().asString(); - normalMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - F32 x, y; - materialp->getNormalOffset(x, y); - cellParams.column = "normal_map_list_offset_x"; - cellParams.value = llformat("%f", x); - normalMapRowParams.columns.add(cellParams); - cellParams.column = "normal_map_list_offset_y"; - cellParams.value = llformat("%f", y); - normalMapRowParams.columns.add(cellParams); - - materialp->getNormalRepeat(x, y); - cellParams.column = "normal_map_list_repeat_x"; - cellParams.value = llformat("%f", x); - normalMapRowParams.columns.add(cellParams); - cellParams.column = "normal_map_list_repeat_y"; - cellParams.value = llformat("%f", y); - normalMapRowParams.columns.add(cellParams); - - cellParams.column = "normal_map_list_rotation"; - cellParams.value = llformat("%f", materialp->getNormalRotation()); - normalMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "specular_map_list_map"; - cellParams.value = materialp->getSpecularID().asString(); - specularMapRowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - materialp->getSpecularOffset(x, y); - cellParams.column = "specular_map_list_offset_x"; - cellParams.value = llformat("%f", x); - specularMapRowParams.columns.add(cellParams); - cellParams.column = "specular_map_list_offset_y"; - cellParams.value = llformat("%f", y); - specularMapRowParams.columns.add(cellParams); - - materialp->getSpecularRepeat(x, y); - cellParams.column = "specular_map_list_repeat_x"; - cellParams.value = llformat("%f", x); - specularMapRowParams.columns.add(cellParams); - cellParams.column = "specular_map_list_repeat_y"; - cellParams.value = llformat("%f", y); - specularMapRowParams.columns.add(cellParams); - - cellParams.column = "specular_map_list_rotation"; - cellParams.value = llformat("%d", materialp->getSpecularRotation()); - specularMapRowParams.columns.add(cellParams); - - const LLColor4U& specularColor =materialp->getSpecularLightColor(); - cellParams.column = "specular_color"; - cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0], - specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "specular_exponent"; - cellParams.value = llformat("%d", materialp->getSpecularLightExponent()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "env_intensity"; - cellParams.value = llformat("%d", materialp->getEnvironmentIntensity()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "alpha_mask_cutoff"; - cellParams.value = llformat("%d", materialp->getAlphaMaskCutoff()); - otherDataRowParams.columns.add(cellParams); - - cellParams.column = "diffuse_alpha_mode"; - cellParams.value = llformat("%d", materialp->getDiffuseAlphaMode()); - otherDataRowParams.columns.add(cellParams); - - normalMapRowParams.value = cellParams.value; - specularMapRowParams.value = cellParams.value; - otherDataRowParams.value = cellParams.value; - - instancep->mPostNormalMapScrollList->addRow(normalMapRowParams); - instancep->mPostSpecularMapScrollList->addRow(specularMapRowParams); - instancep->mPostOtherDataScrollList->addRow(otherDataRowParams); -} - -void LLFloaterDebugMaterials::setState(EState pState) -{ - mState = pState; - updateStatusMessage(); - updateControls(); -} - -void LLFloaterDebugMaterials::refreshObjectEdit() -{ - mPutScrollList->deleteAllItems(); - - LLScrollListCell::Params cellParams; - LLScrollListItem::Params rowParams; - - LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); - for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin(); - objectIter != selectionHandle->valid_end(); ++objectIter) - { - LLSelectNode* nodep = *objectIter; - - LLViewerObject* objectp = nodep->getObject(); - if (objectp != NULL) - { - S32 numTEs = llmin(static_cast<S32>(objectp->getNumTEs()), objectp->getNumFaces()); - for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex) - { - if (nodep->isTESelected(curTEIndex)) - { - const LLTextureEntry* tep = objectp->getTE(curTEIndex); - - cellParams.font = LLFontGL::getFontMonospace(); - - cellParams.column = "material_id"; - cellParams.value = tep->getMaterialID().asString(); - rowParams.columns.add(cellParams); - - cellParams.font = LLFontGL::getFontSansSerif(); - - cellParams.column = "object_id"; - cellParams.value = objectp->getID().asString(); - rowParams.columns.add(cellParams); - - cellParams.column = "face_index"; - cellParams.value = llformat("%d", curTEIndex); - rowParams.columns.add(cellParams); - - mPutScrollList->addRow(rowParams); - } - } - } - } -} - -void LLFloaterDebugMaterials::resetObjectEditInputs() -{ - const LLSD zeroValue = static_cast<LLSD::Integer>(0); - const LLSD maxAlphaValue = static_cast<LLSD::Integer>(255); - - mNormalMap->clear(); - mNormalMapOffsetX->setValue(zeroValue); - mNormalMapOffsetY->setValue(zeroValue); - mNormalMapRepeatX->setValue(zeroValue); - mNormalMapRepeatY->setValue(zeroValue); - mNormalMapRotation->setValue(zeroValue); - - mSpecularMap->clear(); - mSpecularMapOffsetX->setValue(zeroValue); - mSpecularMapOffsetY->setValue(zeroValue); - mSpecularMapRepeatX->setValue(zeroValue); - mSpecularMapRepeatY->setValue(zeroValue); - mSpecularMapRotation->setValue(zeroValue); - - mSpecularColor->set(mDefaultSpecularColor); - mSpecularColorAlpha->setValue(maxAlphaValue); - mSpecularExponent->setValue(zeroValue); - mEnvironmentExponent->setValue(zeroValue); - mAlphaMaskCutoff->setValue(zeroValue); - mDiffuseAlphaMode->setValue(zeroValue); -} - -void LLFloaterDebugMaterials::clearGetResults() -{ - mGetNormalMapScrollList->deleteAllItems(); - mGetSpecularMapScrollList->deleteAllItems(); - mGetOtherDataScrollList->deleteAllItems(); -} - -void LLFloaterDebugMaterials::clearPostResults() -{ - mPostNormalMapScrollList->deleteAllItems(); - mPostSpecularMapScrollList->deleteAllItems(); - mPostOtherDataScrollList->deleteAllItems(); -} - -void LLFloaterDebugMaterials::clearViewableObjectsResults() -{ - mViewableObjectsScrollList->deleteAllItems(); - clearUnparsedQueryData(); -} - -void LLFloaterDebugMaterials::setUnparsedQueryData() -{ - mNextUnparsedQueryDataIndex = 0; - - updateQueryParsingStatus(); -} - -void LLFloaterDebugMaterials::clearUnparsedQueryData() -{ - mNextUnparsedQueryDataIndex = -1; - - updateQueryParsingStatus(); -} - -void LLFloaterDebugMaterials::updateQueryParsingStatus() -{ - std::string queryStatus; - - if (mNextUnparsedQueryDataIndex >= 0) - { - LLLocale locale(LLStringUtil::getLocale()); - std::string numProcessedString; - LLResMgr::getInstance()->getIntegerString(numProcessedString, mNextUnparsedQueryDataIndex); - - std::string numTotalString; - LLResMgr::getInstance()->getIntegerString(numTotalString, gObjectList.getNumObjects()); - - LLStringUtil::format_map_t stringArgs; - stringArgs["[NUM_PROCESSED]"] = numProcessedString; - stringArgs["[NUM_TOTAL]"] = numTotalString; - - queryStatus = getString("querying_status_in_progress", stringArgs); - } - else - { - queryStatus = getString("querying_status_done"); - } - - mQueryStatusText->setText(static_cast<const LLStringExplicit>(queryStatus)); -} - -void LLFloaterDebugMaterials::updateStatusMessage() -{ - std::string statusText; - LLStyle::Params styleParams; - - switch (getState()) - { - case kNoRegion : - statusText = getString("status_no_region"); - styleParams.color = mErrorColor; - break; - case kCapabilitiesLoading : - statusText = getString("status_capabilities_loading"); - styleParams.color = mWarningColor; - break; - case kReady : - statusText = getString("status_ready"); - break; - case kRequestStarted : - statusText = getString("status_request_started"); - styleParams.color = mWarningColor; - break; - case kRequestCompleted : - statusText = getString("status_request_completed"); - break; - case kNotEnabled : - statusText = getString("status_not_enabled"); - styleParams.color = mErrorColor; - break; - case kError : - statusText = getString("status_error"); - styleParams.color = mErrorColor; - break; - default : - statusText = getString("status_ready"); - llassert(0); - break; - } - - mStatusText->setText((LLStringExplicit)statusText, styleParams); -} - -void LLFloaterDebugMaterials::updateControls() -{ - LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); - bool isPutEnabled = (selectionHandle->valid_begin() != selectionHandle->valid_end()); - bool isPostEnabled = (mViewableObjectsScrollList->getNumSelected() > 0); - - switch (getState()) - { - case kNoRegion : - case kCapabilitiesLoading : - case kRequestStarted : - case kNotEnabled : - mGetButton->setEnabled(FALSE); - mPutSetButton->setEnabled(FALSE); - mPutClearButton->setEnabled(FALSE); - mPostButton->setEnabled(FALSE); - break; - case kReady : - case kRequestCompleted : - case kError : - mGetButton->setEnabled(TRUE); - mPutSetButton->setEnabled(isPutEnabled); - mPutClearButton->setEnabled(isPutEnabled); - mPostButton->setEnabled(isPostEnabled); - break; - default : - mGetButton->setEnabled(TRUE); - mPutSetButton->setEnabled(isPutEnabled); - mPutClearButton->setEnabled(isPutEnabled); - mPostButton->setEnabled(isPostEnabled); - llassert(0); - break; - } -} - -template<typename T> T getLineEditorValue(const LLLineEditor *pLineEditor); - -template<> U8 getLineEditorValue(const LLLineEditor *pLineEditor) -{ - U8 value = 0; - - LLStringUtil::convertToU8(pLineEditor->getText(), value); - - return value; -} - -LLMaterial LLFloaterDebugMaterials::getMaterial() const -{ - LLMaterial material; - - material.setNormalID(mNormalMap->getImageAssetID()); - material.setNormalOffset(mNormalMapOffsetX->get(), mNormalMapOffsetY->get()); - material.setNormalRepeat(mNormalMapRepeatX->get(), mNormalMapRepeatY->get()); - material.setNormalRotation(mNormalMapRotation->get()); - - material.setSpecularID(mSpecularMap->getImageAssetID()); - material.setSpecularOffset(mSpecularMapOffsetX->get(), mSpecularMapOffsetY->get()); - material.setSpecularRepeat(mSpecularMapRepeatX->get(), mSpecularMapRepeatY->get()); - material.setSpecularRotation(mSpecularMapRotation->get()); - - const LLColor4& specularColor = mSpecularColor->get(); - LLColor4U specularColor4U = specularColor; - specularColor4U.setAlpha(static_cast<U8>(llclamp(llround(mSpecularColorAlpha->get()), 0, 255))); - material.setSpecularLightColor(specularColor4U); - - material.setSpecularLightExponent(getLineEditorValue<U8>(mSpecularExponent)); - material.setEnvironmentIntensity(getLineEditorValue<U8>(mEnvironmentExponent)); - material.setDiffuseAlphaMode(getLineEditorValue<U8>(mDiffuseAlphaMode)); - material.setAlphaMaskCutoff(getLineEditorValue<U8>(mAlphaMaskCutoff)); - - return material; -} diff --git a/indra/newview/llfloaterdebugmaterials.h b/indra/newview/llfloaterdebugmaterials.h deleted file mode 100644 index 0bd33d7cd0..0000000000 --- a/indra/newview/llfloaterdebugmaterials.h +++ /dev/null @@ -1,186 +0,0 @@ -/** -* @file llfloaterdebugmaterials.h -* @brief Header file for llfloaterdebugmaterials -* @author Stinson@lindenlab.com -* -* $LicenseInfo:firstyear=2012&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2012, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ -#ifndef LL_LLFLOATERDEBUGMATERIALS_H -#define LL_LLFLOATERDEBUGMATERIALS_H - -#include <string> - -#include <boost/shared_ptr.hpp> -#include <boost/signals2.hpp> - -#include "llfloater.h" -#include "llmaterial.h" -#include "llmaterialmgr.h" -#include "lluuid.h" -#include "v4color.h" - -class LLButton; -class LLColorSwatchCtrl; -class LLColor4U; -class LLLineEditor; -class LLMaterialID; -class LLScrollListCtrl; -class LLSD; -class LLSpinCtrl; -class LLTextBase; -class LLTextureCtrl; -class LLUICtrl; -class MultiMaterialsResponder; - -typedef boost::shared_ptr<MultiMaterialsResponder> MultiMaterialsResponderPtr; - -class LLFloaterDebugMaterials : public LLFloater -{ -public: - virtual BOOL postBuild(); - - virtual void onOpen(const LLSD& pKey); - virtual void onClose(bool pIsAppQuitting); - - virtual void draw(); - -protected: - -private: - friend class LLFloaterReg; - - typedef enum { - kNoRegion, - kCapabilitiesLoading, - kReady, - kRequestStarted, - kRequestCompleted, - kNotEnabled, - kError - } EState; - - LLFloaterDebugMaterials(const LLSD& pParams); - virtual ~LLFloaterDebugMaterials(); - - void onGetClicked(); - void onValueEntered(LLUICtrl* pUICtrl); - void onPutSetClicked(); - void onPutClearClicked(); - void onResetPutValuesClicked(); - void onQueryVisibleObjectsClicked(); - void onPostClicked(); - void onRegionCross(); - void onInWorldSelectionChange(); - void onGetScrollListSelectionChange(LLUICtrl* pUICtrl); - void onPostScrollListSelectionChange(LLUICtrl* pUICtrl); - void onViewableObjectsScrollListSelectionChange(); - void onDeferredCheckRegionMaterialStatus(LLUUID regionId); - void onDeferredRequestGetMaterials(LLUUID regionId); - void onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet); - - void checkRegionMaterialStatus(); - void checkRegionMaterialStatus(const LLUUID& regionId); - - void requestGetMaterials(); - void requestGetMaterials(const LLUUID& regionId); - - void requestPutMaterials(bool pIsDoSet); - void requestPutMaterials(const LLUUID& regionId, bool pIsDoSet); - - static void onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials); - static void onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp); - - void parseQueryViewableObjects(); - - void setState(EState pState); - inline EState getState() const; - - void refreshObjectEdit(); - void resetObjectEditInputs(); - void clearGetResults(); - void clearPostResults(); - void clearViewableObjectsResults(); - - void setUnparsedQueryData(); - void clearUnparsedQueryData(); - void updateQueryParsingStatus(); - - void updateStatusMessage(); - void updateControls(); - - LLMaterial getMaterial() const; - - LLTextBase* mStatusText; - LLButton* mGetButton; - LLTextBase* mParsingStatusText; - LLScrollListCtrl* mGetNormalMapScrollList; - LLScrollListCtrl* mGetSpecularMapScrollList; - LLScrollListCtrl* mGetOtherDataScrollList; - LLTextureCtrl* mNormalMap; - LLSpinCtrl* mNormalMapOffsetX; - LLSpinCtrl* mNormalMapOffsetY; - LLSpinCtrl* mNormalMapRepeatX; - LLSpinCtrl* mNormalMapRepeatY; - LLSpinCtrl* mNormalMapRotation; - LLTextureCtrl* mSpecularMap; - LLSpinCtrl* mSpecularMapOffsetX; - LLSpinCtrl* mSpecularMapOffsetY; - LLSpinCtrl* mSpecularMapRepeatX; - LLSpinCtrl* mSpecularMapRepeatY; - LLSpinCtrl* mSpecularMapRotation; - LLColorSwatchCtrl* mSpecularColor; - LLSpinCtrl* mSpecularColorAlpha; - LLLineEditor* mSpecularExponent; - LLLineEditor* mEnvironmentExponent; - LLLineEditor* mAlphaMaskCutoff; - LLLineEditor* mDiffuseAlphaMode; - LLButton* mPutSetButton; - LLButton* mPutClearButton; - LLScrollListCtrl* mPutScrollList; - LLButton* mQueryViewableObjectsButton; - LLTextBase* mQueryStatusText; - LLScrollListCtrl* mViewableObjectsScrollList; - LLButton* mPostButton; - LLScrollListCtrl* mPostNormalMapScrollList; - LLScrollListCtrl* mPostSpecularMapScrollList; - LLScrollListCtrl* mPostOtherDataScrollList; - - LLColor4 mDefaultSpecularColor; - - EState mState; - LLColor4 mWarningColor; - LLColor4 mErrorColor; - - boost::signals2::connection mRegionCrossConnection; - boost::signals2::connection mTeleportFailedConnection; - boost::signals2::connection mSelectionUpdateConnection; - - S32 mNextUnparsedQueryDataIndex; -}; - - -LLFloaterDebugMaterials::EState LLFloaterDebugMaterials::getState() const -{ - return mState; -} - -#endif // LL_LLFLOATERDEBUGMATERIALS_H diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index e74c8509ce..51bda4141d 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -66,15 +66,28 @@ #include "llviewertexturelist.h" // +// Constant definitions for comboboxes +// Must match the commbobox definitions in panel_tools_texture.xml +// +const S32 MATMEDIA_MATERIAL = 0; // Material +const S32 MATMEDIA_MEDIA = 1; // Media +const S32 MATTYPE_DIFFUSE = 0; // Diffuse material texture +const S32 MATTYPE_NORMAL = 1; // Normal map +const S32 MATTYPE_SPECULAR = 2; // Specular map +const S32 ALPHAMODE_NONE = 0; // No alpha mask applied +const S32 ALPHAMODE_MASK = 2; // Alpha masking mode +const S32 BUMPY_TEXTURE = 18; // use supplied normal map +const S32 SHINY_TEXTURE = 4; // use supplied specular map + +// // Methods // BOOL LLPanelFace::postBuild() { - childSetCommitCallback("combobox matmedia",&LLPanelFace::onCommitMaterialsMedia,this); - childSetCommitCallback("combobox mattype",&LLPanelFace::onCommitMaterialType,this); childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this); childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this); + childSetCommitCallback("combobox alphamode",&LLPanelFace::onCommitAlphaMode,this); childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this); childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this); childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this); @@ -89,6 +102,8 @@ BOOL LLPanelFace::postBuild() LLColorSwatchCtrl* mColorSwatch; LLComboBox* mComboTexGen; + LLComboBox* mComboMatMedia; + LLComboBox* mComboMatType; LLCheckBoxCtrl *mCheckFullbright; @@ -154,6 +169,20 @@ BOOL LLPanelFace::postBuild() mComboTexGen->setFollows(FOLLOWS_LEFT | FOLLOWS_TOP); } + mComboMatMedia = getChild<LLComboBox>("combobox matmedia"); + if(mComboMatMedia) + { + mComboMatMedia->setCommitCallback(LLPanelFace::onCommitMaterialsMedia,this); + mComboMatMedia->selectNthItem(MATMEDIA_MATERIAL); + } + + mComboMatType = getChild<LLComboBox>("combobox mattype"); + if(mComboMatType) + { + mComboMatType->setCommitCallback(LLPanelFace::onCommitMaterialType, this); + mComboMatType->selectNthItem(MATTYPE_DIFFUSE); + } + mCtrlGlow = getChild<LLSpinCtrl>("glow"); if(mCtrlGlow) { @@ -492,30 +521,33 @@ void LLPanelFace::getState() BOOL editable = objectp->permModify() && !objectp->isPermanentEnforced(); // only turn on auto-adjust button if there is a media renderer and the media is loaded - getChildView("textbox autofix")->setEnabled(editable); getChildView("button align")->setEnabled(editable); - LLCtrlSelectionInterface* combobox_matmedia = - childGetSelectionInterface("combobox matmedia"); + LLComboBox* combobox_matmedia = getChild<LLComboBox>("combobox matmedia"); if (combobox_matmedia) { - combobox_matmedia->selectNthItem(0); + if (combobox_matmedia->getCurrentIndex() < MATMEDIA_MATERIAL) + { + combobox_matmedia->selectNthItem(MATMEDIA_MATERIAL); + } } else { - llwarns << "failed childGetSelectionInterface for 'combobox matmedia'" << llendl; + llwarns << "failed getChild for 'combobox matmedia'" << llendl; } getChildView("combobox matmedia")->setEnabled(editable); - LLCtrlSelectionInterface* combobox_mattype = - childGetSelectionInterface("combobox mattype"); + LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype"); if (combobox_mattype) { - combobox_mattype->selectNthItem(0); + if (combobox_mattype->getCurrentIndex() < MATTYPE_DIFFUSE) + { + combobox_mattype->selectNthItem(MATTYPE_DIFFUSE); + } } else { - llwarns << "failed childGetSelectionInterface for 'combobox mattype'" << llendl; + llwarns << "failed getChild for 'combobox mattype'" << llendl; } getChildView("combobox mattype")->setEnabled(editable); onCommitMaterialsMedia(NULL, this); @@ -565,12 +597,41 @@ void LLPanelFace::getState() } func; identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, id ); + BOOL is_alpha = FALSE; + struct f2 : public LLSelectedTEGetFunctor<BOOL> + { + BOOL get(LLViewerObject* object, S32 te_index) + { + BOOL is_alpha = FALSE; + + LLViewerTexture* image = object->getTEImage(te_index); + if (image) is_alpha = image->getIsAlphaMask(); + return is_alpha; + } + } func2; + identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func2, is_alpha ); + if(LLViewerMedia::textureHasMedia(id)) { - getChildView("textbox autofix")->setEnabled(editable); getChildView("button align")->setEnabled(editable); } + if (!is_alpha) + { + // Selected texture has no alpha, force alpha mode None + LLCtrlSelectionInterface* combobox_alphamode = + childGetSelectionInterface("combobox alphamode"); + if (combobox_alphamode) + { + combobox_alphamode->selectNthItem(ALPHAMODE_NONE); + } + else + { + llwarns << "failed childGetSelectionInterface for 'combobox alphamode'" << llendl; + } + onCommitAlphaMode(getChild<LLComboBox>("combobox alpha"),this); + } + if (identical) { // All selected have the same texture @@ -579,6 +640,10 @@ void LLPanelFace::getState() texture_ctrl->setTentative( FALSE ); texture_ctrl->setEnabled( editable ); texture_ctrl->setImageAssetID( id ); + getChildView("combobox alphamode")->setEnabled(editable && is_alpha); + getChildView("label alphamode")->setEnabled(editable && is_alpha); + getChildView("maskcutoff")->setEnabled(editable && is_alpha); + getChildView("label maskcutoff")->setEnabled(editable && is_alpha); } } else @@ -591,6 +656,10 @@ void LLPanelFace::getState() texture_ctrl->setTentative( FALSE ); texture_ctrl->setEnabled( FALSE ); texture_ctrl->setImageAssetID( LLUUID::null ); + getChildView("combobox alphamode")->setEnabled( FALSE ); + getChildView("label alphamode")->setEnabled( FALSE ); + getChildView("maskcutoff")->setEnabled( FALSE); + getChildView("label maskcutoff")->setEnabled( FALSE ); } else { @@ -598,6 +667,10 @@ void LLPanelFace::getState() texture_ctrl->setTentative( TRUE ); texture_ctrl->setEnabled( editable ); texture_ctrl->setImageAssetID( id ); + getChildView("combobox alphamode")->setEnabled(editable && is_alpha); + getChildView("label alphamode")->setEnabled(editable && is_alpha); + getChildView("maskcutoff")->setEnabled(editable && is_alpha); + getChildView("label maskcutoff")->setEnabled(editable && is_alpha); } } } @@ -803,6 +876,15 @@ void LLPanelFace::getState() getChildView("combobox shininess")->setEnabled(editable); getChild<LLUICtrl>("combobox shininess")->setTentative(!identical); getChildView("label shininess")->setEnabled(editable); + getChildView("glossiness")->setEnabled(editable); + getChild<LLUICtrl>("glossiness")->setTentative(!identical); + getChildView("label glossiness")->setEnabled(editable); + getChildView("environment")->setEnabled(editable); + getChild<LLUICtrl>("environment")->setTentative(!identical); + getChildView("label environment")->setEnabled(editable); + getChildView("shinycolorswatch")->setEnabled(editable); + getChild<LLUICtrl>("shinycolorswatch")->setTentative(!identical); + getChildView("label shinycolor")->setEnabled(editable); } { @@ -955,12 +1037,9 @@ void LLPanelFace::getState() getChildView("label shininess")->setEnabled(FALSE); getChildView("label bumpiness")->setEnabled(FALSE); - getChildView("textbox autofix")->setEnabled(FALSE); - getChildView("button align")->setEnabled(FALSE); //getChildView("has media")->setEnabled(FALSE); //getChildView("media info set")->setEnabled(FALSE); - // Set variable values for numeric expressions LLCalc* calcp = LLCalc::getInstance(); @@ -1016,30 +1095,50 @@ void LLPanelFace::onSelectColor(const LLSD& data) void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata) { LLPanelFace* self = (LLPanelFace*) userdata; - LLComboBox* mComboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia"); - if (!mComboMaterialsMedia) + LLComboBox* comboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia"); + if (!comboMaterialsMedia) { return; } - U32 materials_media = mComboMaterialsMedia->getCurrentIndex(); - LLComboBox* mComboMaterialType = self->getChild<LLComboBox>("combobox mattype"); - if (!mComboMaterialType) + U32 materials_media = comboMaterialsMedia->getCurrentIndex(); + LLComboBox* comboMaterialType = self->getChild<LLComboBox>("combobox mattype"); + if (!comboMaterialType) { return; } - U32 material_type = mComboMaterialType->getCurrentIndex(); - bool show_media = (materials_media == 1); - bool show_texture = (!show_media) && (material_type == 0); - bool show_bumpiness = (!show_media) && (material_type == 1); - bool show_shininess = (!show_media) && (material_type == 2); + U32 material_type = comboMaterialType->getCurrentIndex(); + bool show_media = (materials_media == MATMEDIA_MEDIA); + bool show_texture = (!show_media) && (material_type == MATTYPE_DIFFUSE); + bool show_bumpiness = (!show_media) && (material_type == MATTYPE_NORMAL); + bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR); self->getChildView("combobox mattype")->setVisible(!show_media); self->getChildView("media_info")->setVisible(show_media); self->getChildView("add_media")->setVisible(show_media); self->getChildView("delete_media")->setVisible(show_media); self->getChildView("button align")->setVisible(show_media); self->getChildView("texture control")->setVisible(show_texture); + self->getChildView("label alphamode")->setVisible(show_texture); + self->getChildView("combobox alphamode")->setVisible(show_texture); + self->getChildView("label maskcutoff")->setVisible(false); + self->getChildView("maskcutoff")->setVisible(false); + if (show_texture) + { + onCommitAlphaMode(ctrl, userdata); + } + self->getChildView("shinytexture control")->setVisible(show_shininess); self->getChildView("combobox shininess")->setVisible(show_shininess); self->getChildView("label shininess")->setVisible(show_shininess); + self->getChildView("label glossiness")->setVisible(false); + self->getChildView("glossiness")->setVisible(false); + self->getChildView("label environment")->setVisible(false); + self->getChildView("environment")->setVisible(false); + self->getChildView("label shinycolor")->setVisible(false); + self->getChildView("shinycolorswatch")->setVisible(false); + if (show_shininess) + { + onCommitShiny(ctrl, userdata); + } + self->getChildView("bumpytexture control")->setVisible(show_bumpiness); self->getChildView("combobox bumpiness")->setVisible(show_bumpiness); self->getChildView("label bumpiness")->setVisible(show_bumpiness); } @@ -1068,10 +1167,38 @@ void LLPanelFace::onCommitTexGen(LLUICtrl* ctrl, void* userdata) void LLPanelFace::onCommitShiny(LLUICtrl* ctrl, void* userdata) { LLPanelFace* self = (LLPanelFace*) userdata; + LLComboBox* comboShiny = self->getChild<LLComboBox>("combobox shininess"); + if (!comboShiny) + { + return; + } + U32 shiny_value = comboShiny->getCurrentIndex(); + bool show_shinyctrls = (shiny_value == SHINY_TEXTURE); // Use texture + self->getChildView("label glossiness")->setVisible(show_shinyctrls); + self->getChildView("glossiness")->setVisible(show_shinyctrls); + self->getChildView("label environment")->setVisible(show_shinyctrls); + self->getChildView("environment")->setVisible(show_shinyctrls); + self->getChildView("label shinycolor")->setVisible(show_shinyctrls); + self->getChildView("shinycolorswatch")->setVisible(show_shinyctrls); self->sendShiny(); } // static +void LLPanelFace::onCommitAlphaMode(LLUICtrl* ctrl, void* userdata) +{ + LLPanelFace* self = (LLPanelFace*) userdata; + LLComboBox* comboAlphaMode = self->getChild<LLComboBox>("combobox alphamode"); + if (!comboAlphaMode) + { + return; + } + U32 alpha_value = comboAlphaMode->getCurrentIndex(); + bool show_alphactrls = (alpha_value == ALPHAMODE_MASK); // Alpha masking + self->getChildView("label maskcutoff")->setVisible(show_alphactrls); + self->getChildView("maskcutoff")->setVisible(show_alphactrls); +} + +// static void LLPanelFace::onCommitFullbright(LLUICtrl* ctrl, void* userdata) { LLPanelFace* self = (LLPanelFace*) userdata; diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h index acac2c1bf5..56b4034a2d 100644 --- a/indra/newview/llpanelface.h +++ b/indra/newview/llpanelface.h @@ -85,6 +85,7 @@ protected: static void onCommitBump( LLUICtrl* ctrl, void* userdata); static void onCommitTexGen( LLUICtrl* ctrl, void* userdata); static void onCommitShiny( LLUICtrl* ctrl, void* userdata); + static void onCommitAlphaMode( LLUICtrl* ctrl, void* userdata); static void onCommitFullbright( LLUICtrl* ctrl, void* userdata); static void onCommitGlow( LLUICtrl* ctrl, void *userdata); static void onCommitPlanarAlign( LLUICtrl* ctrl, void* userdata); diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index e3fc957fd2..deaacc4975 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -24,7 +24,7 @@ * $/LicenseInfo$ */ -#ifndef LL_LLTEXTURECACHE_ +#ifndef LL_LLTEXTURECACHE_H #define LL_LLTEXTURECACHE_H #include "lldir.h" diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index d58ee05fb6..feceee5709 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1051,6 +1051,7 @@ void render_hud_attachments() if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) { + LLPipeline::sRenderingHUDs = TRUE; LLCamera hud_cam = *LLViewerCamera::getInstance(); LLVector3 origin = hud_cam.getOrigin(); hud_cam.setOrigin(-1.f,0,0); @@ -1124,6 +1125,7 @@ void render_hud_attachments() gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI); } LLPipeline::sUseOcclusion = use_occlusion; + LLPipeline::sRenderingHUDs = FALSE; } gGL.matrixMode(LLRender::MM_PROJECTION); gGL.popMatrix(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index b630b5bbe6..05fc3fe7d1 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -50,7 +50,6 @@ #include "llfloaterbump.h" #include "llfloaterbvhpreview.h" #include "llfloatercamera.h" -#include "llfloaterdebugmaterials.h" #include "llfloaterdeleteenvpreset.h" #include "llfloaterdisplayname.h" #include "llfloatereditdaycycle.h" @@ -256,7 +255,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("pathfinding_characters", "floater_pathfinding_characters.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingCharacters>); LLFloaterReg::add("pathfinding_linksets", "floater_pathfinding_linksets.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingLinksets>); LLFloaterReg::add("pathfinding_console", "floater_pathfinding_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingConsole>); - LLFloaterReg::add("floater_debug_materials", "floater_debug_materials.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDebugMaterials>); + LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>); diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp index b04d30db55..0b5e0235ee 100644 --- a/indra/newview/llwlparamset.cpp +++ b/indra/newview/llwlparamset.cpp @@ -33,6 +33,7 @@ #include "llglslshader.h" #include "lluictrlfactory.h" #include "llsliderctrl.h" +#include "pipeline.h" #include <llgl.h> @@ -127,6 +128,13 @@ void LLWLParamSet::update(LLGLSLShader * shader) const } } } + + if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender) + { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2); + } else { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0); + } } void LLWLParamSet::set(const std::string& paramName, float x) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 24144382dc..07246391e3 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -377,6 +377,7 @@ BOOL LLPipeline::sRenderDeferred = FALSE; BOOL LLPipeline::sMemAllocationThrottled = FALSE; S32 LLPipeline::sVisibleLightCount = 0; F32 LLPipeline::sMinRenderSize = 0.f; +BOOL LLPipeline::sRenderingHUDs; static LLCullResult* sCull = NULL; @@ -396,7 +397,7 @@ void validate_framebuffer_object(); bool addDeferredAttachments(LLRenderTarget& target) { - return target.addColorAttachment(GL_RGBA) && //specular + return target.addColorAttachment(GL_SRGB_ALPHA) && //specular target.addColorAttachment(GL_RGB10_A2); //normal+z } @@ -898,11 +899,11 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) BOOL ssao = RenderDeferredSSAO; //allocate deferred rendering color buffers - if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; + if (!mDeferredScreen.allocate(resX, resY, GL_SRGB8_ALPHA8, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; if (!addDeferredAttachments(mDeferredScreen)) return false; - if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; + if (!mScreen.allocate(resX, resY, GL_RGBA12, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; if (samples > 0) { if (!mFXAABuffer.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false; @@ -1195,7 +1196,7 @@ void LLPipeline::createGLBuffers() for (U32 i = 0; i < 3; i++) { - mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE); + mGlow[i].allocate(512,glow_res,sRenderDeferred ? GL_RGB10_A2 : GL_RGB10_A2,FALSE,FALSE); } allocateScreenBuffer(resX,resY); @@ -3602,8 +3603,8 @@ void LLPipeline::postSort(LLCamera& camera) for (LLCullResult::sg_iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i) { LLSpatialGroup* group = *i; - if (sUseOcclusion && - group->isOcclusionState(LLSpatialGroup::OCCLUDED) || + if ((sUseOcclusion && + group->isOcclusionState(LLSpatialGroup::OCCLUDED)) || (RenderAutoHideSurfaceAreaLimit > 0.f && group->mSurfaceArea > RenderAutoHideSurfaceAreaLimit*llmax(group->mObjectBoxSize, 10.f))) { @@ -5034,8 +5035,8 @@ void LLPipeline::renderDebug() LLSpatialPartition* part = region->getSpatialPartition(i); if (part) { - if ( hud_only && (part->mDrawableType == RENDER_TYPE_HUD || part->mDrawableType == RENDER_TYPE_HUD_PARTICLES) || - !hud_only && hasRenderType(part->mDrawableType) ) + if ( (hud_only && (part->mDrawableType == RENDER_TYPE_HUD || part->mDrawableType == RENDER_TYPE_HUD_PARTICLES)) || + (!hud_only && hasRenderType(part->mDrawableType)) ) { part->renderDebug(); } @@ -7382,6 +7383,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) mScreen.bindTexture(0, channel); gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); } + + if (!LLViewerCamera::getInstance()->cameraUnderWater()) + { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2); + } else { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0); + } shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF); shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale); @@ -7423,6 +7431,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) { mScreen.bindTexture(0, channel); } + + if (!LLViewerCamera::getInstance()->cameraUnderWater()) + { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2); + } else { + shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0); + } gGL.begin(LLRender::TRIANGLE_STRIP); gGL.texCoord2f(tc1.mV[0], tc1.mV[1]); @@ -7843,6 +7858,22 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 n } } +LLColor3 pow3f(LLColor3 v, F32 f) +{ + v.mV[0] = powf(v.mV[0], f); + v.mV[1] = powf(v.mV[1], f); + v.mV[2] = powf(v.mV[2], f); + return v; +} + +LLVector4 pow4fsrgb(LLVector4 v, F32 f) +{ + v.mV[0] = powf(v.mV[0], f); + v.mV[1] = powf(v.mV[1], f); + v.mV[2] = powf(v.mV[2], f); + return v; +} + static LLFastTimer::DeclareTimer FTM_GI_TRACE("Trace"); static LLFastTimer::DeclareTimer FTM_GI_GATHER("Gather"); static LLFastTimer::DeclareTimer FTM_SUN_SHADOW("Shadow Map"); @@ -8178,7 +8209,7 @@ void LLPipeline::renderDeferredLighting() LLFastTimer ftm(FTM_LOCAL_LIGHTS); gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c); gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s); - gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV); gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); gGL.syncMatrices(); @@ -8234,7 +8265,7 @@ void LLPipeline::renderDeferredLighting() gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c); gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s); - gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV); gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); gGL.syncMatrices(); @@ -8281,7 +8312,7 @@ void LLPipeline::renderDeferredLighting() light_colors.pop_front(); far_z = llmin(light[count].mV[2]-sqrtf(light[count].mV[3]), far_z); - + col[count] = pow4fsrgb(col[count], 2.2f); count++; if (count == max_count || fullscreen_lights.empty()) { @@ -8325,7 +8356,7 @@ void LLPipeline::renderDeferredLighting() gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v); gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s); - gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV); gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); } diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 36abeca295..e264081910 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -554,7 +554,8 @@ public: static BOOL sRenderDeferred; static BOOL sMemAllocationThrottled; static S32 sVisibleLightCount; - static F32 sMinRenderSize; + static F32 sMinRenderSize; + static BOOL sRenderingHUDs; //screen texture U32 mScreenWidth; diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index d695cd1f89..f2ed7c2e64 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -245,7 +245,7 @@ <menu label="Gengivelse" name="Rendering"> <menu_item_check label="Akser" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Lys og skygger" name="Lighting and Shadows"/> + <menu_item_check label="Lys og skygger" name="Advanced Lighting Model"/> <menu_item_check label="Skygger fra sol/måne/andre lyskilder" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO og skygge udjævning" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Globalt lys (eksperimentiel)" name="Global Illumination"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 845df1f050..8277174cda 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -307,7 +307,7 @@ <menu_item_call label="Texturinfo für ausgewähltes Objekt" name="Selected Texture Info Basis"/> <menu_item_check label="Wireframe" name="Wireframe"/> <menu_item_check label="Objekt-Objekt Okklusion" name="Object-Object Occlusion"/> - <menu_item_check label="Licht und Schatten" name="Lighting and Shadows"/> + <menu_item_check label="Licht und Schatten" name="Advanced Lighting Model"/> <menu_item_check label="Schatten von Sonne-/Mond-Projektoren" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO und Schattenglättung" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/en/floater_debug_materials.xml b/indra/newview/skins/default/xui/en/floater_debug_materials.xml deleted file mode 100644 index 3a450fdeff..0000000000 --- a/indra/newview/skins/default/xui/en/floater_debug_materials.xml +++ /dev/null @@ -1,995 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - positioning="cascading" - can_tear_off="false" - can_resize="true" - height="770" - width="1040" - min_height="795" - min_width="1040" - layout="topleft" - name="floater_debug_materials" - reuse_instance="true" - save_rect="false" - single_instance="true" - title="Debug materials"> - <floater.string name="status_no_region">No current region available.</floater.string> - <floater.string name="status_capabilities_loading">Region capabilities are loading.</floater.string> - <floater.string name="status_ready">Materials are enabled for this region.</floater.string> - <floater.string name="status_request_started">Request sent.</floater.string> - <floater.string name="status_request_completed">Request received.</floater.string> - <floater.string name="status_not_enabled">Materials are not enabled for this region.</floater.string> - <floater.string name="status_error">An error occurred during the request.</floater.string> - <floater.string name="loading_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string> - <floater.string name="loading_status_done">Complete</floater.string> - <floater.string name="querying_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string> - <floater.string name="querying_status_done">Complete</floater.string> - <panel - border="false" - bevel_style="none" - follows="left|top" - layout="topleft" - left="12" - top_pad="10" - height="61" - width="214"> - <text - height="13" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - layout="topleft" - left="0" - top_pad="0" - width="214"> - Status - </text> - <text - height="40" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="MaterialGoodColor" - length="1" - follows="left|top" - layout="topleft" - left="0" - name="material_status" - top_pad="8" - width="214"> - </text> - </panel> - <tab_container - follows="left|top|right" - layout="topleft" - tab_position="top" - left="10" - top_pad="10" - height="670" - width="1020"> - <panel - border="true" - bevel_style="none" - follows="left|top|right" - layout="topleft" - label="Current region" - height="641" - top_pad="10" - width="1020"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="479" - top_pad="10" - width="1020"> - <button - follows="left|top" - height="22" - label="Get" - layout="topleft" - name="get_button" - top_pad="0" - width="214"/> - <text - height="13" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="2" - top_pad="8" - width="150"> - Loading Status - </text> - <text - height="13" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="MaterialGoodColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="0" - name="loading_status" - top_pad="-13" - width="400"> - </text> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - left="0" - top_pad="10" - tab_stop="false" - multi_select="false" - name="get_other_data_scroll_list" - width="775"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Specular Color" - name="specular_color" - width="120" /> - <scroll_list.columns - label="Specular Exponent" - name="specular_exponent" - width="112" /> - <scroll_list.columns - label="Env Intensity" - name="env_intensity" - width="80" /> - <scroll_list.columns - label="Alpha Mask Cutoff" - name="alpha_mask_cutoff" - width="110" /> - <scroll_list.columns - label="Diffuse Alpha Mode" - name="diffuse_alpha_mode" - width="118" /> - </scroll_list> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - top_pad="10" - tab_stop="false" - multi_select="false" - name="get_specular_map_scroll_list" - width="1020"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Specular Map" - name="specular_map_list_map" - width="225" /> - <scroll_list.columns - label="Offset X" - name="specular_map_list_offset_x" - width="112" /> - <scroll_list.columns - label="Offset Y" - name="specular_map_list_offset_y" - width="112" /> - <scroll_list.columns - label="Repeat X" - name="specular_map_list_repeat_x" - width="112" /> - <scroll_list.columns - label="Repeat Y" - name="specular_map_list_repeat_y" - width="112" /> - <scroll_list.columns - label="Rotation" - name="specular_map_list_rotation" - width="112" /> - </scroll_list> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - top_pad="10" - tab_stop="false" - multi_select="false" - name="get_normal_map_scroll_list" - width="1020"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Normal Map" - name="normal_map_list_map" - width="225" /> - <scroll_list.columns - label="Offset X" - name="normal_map_list_offset_x" - width="112" /> - <scroll_list.columns - label="Offset Y" - name="normal_map_list_offset_y" - width="112" /> - <scroll_list.columns - label="Repeat X" - name="normal_map_list_repeat_x" - width="112" /> - <scroll_list.columns - label="Repeat Y" - name="normal_map_list_repeat_y" - width="112" /> - <scroll_list.columns - label="Rotation" - name="normal_map_list_rotation" - width="112" /> - </scroll_list> - </panel> - </panel> - <panel - border="true" - bevel_style="none" - follows="left|top|right" - layout="topleft" - label="Object editing" - height="641" - top_pad="10" - width="1010"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - left="2" - top_pad="10" - height="420" - width="810"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="265" - top_pad="0" - width="810"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="226" - top_pad="0" - width="263"> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="0" - top_pad="38" - width="160"> - Normal Map - </text> - <texture_picker - allow_no_texture="true" - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - left_pad="0" - top_pad="-50" - label_width="0" - height="100" - width="100" - mouse_opaque="true" - name="normal_map" - tool_tip="Click to open texture picker" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-260" - label="Normal Map Offset X" - max_val="1.0" - min_val="-1.0" - name="normal_map_offset_x" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Normal Map Offset Y" - max_val="1.0" - min_val="-1.0" - name="normal_map_offset_y" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Normal Map Repeat X" - max_val="64" - min_val="0.0" - name="normal_map_repeat_x" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - max_val="64" - min_val="0.0" - label="Normal Map Repeat Y" - name="normal_map_repeat_y" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Normal Map Rotation" - max_val="9999" - min_val="-9999" - name="normal_map_rotation" - top_pad="10" - width="240" /> - </panel> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="226" - top_pad="-226" - left_pad="20" - width="263"> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="0" - top_pad="38" - width="160"> - Specular Map - </text> - <texture_picker - allow_no_texture="true" - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - left_pad="0" - top_pad="-50" - label_width="0" - height="100" - width="100" - mouse_opaque="true" - name="specular_map" - tool_tip="Click to open texture picker" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-260" - label="Specular Map Offset X" - max_val="1.0" - min_val="-1.0" - name="specular_map_offset_x" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Specular Map Offset Y" - max_val="1.0" - min_val="-1.0" - name="specular_map_offset_y" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Specular Map Repeat X" - max_val="64" - min_val="0.0" - name="specular_map_repeat_x" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="0.1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Specular Map Repeat Y" - max_val="64" - min_val="0.0" - name="specular_map_repeat_y" - top_pad="10" - width="240" /> - <spinner - allow_text_entry="true" - follows="left|top" - height="20" - initial_value="0" - increment="1" - decimal_digits="4" - label_width="160" - layout="topleft" - left_pad="-240" - label="Specular Map Rotation" - max_val="9999" - min_val="-9999" - name="specular_map_rotation" - top_pad="10" - width="240" /> - </panel> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="162" - top_pad="-226" - left_pad="20" - width="243"> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="0" - top_pad="10" - width="160"> - Specular Color - </text> - <color_swatch - can_apply_immediately="true" - color="1 1 1 1" - follows="left|top" - height="30" - layout="topleft" - label_height="0" - label_width="0" - left_pad="0" - top_pad="-22" - name="specular_color" - tool_tip="Click to open color picker" - width="40" /> - <spinner - follows="left|top" - height="20" - initial_value="255" - max_val="255" - min_val="0" - increment="1" - decimal_digits="0" - allow_text_entry="true" - layout="topleft" - label_width="160" - left="0" - top_pad="10" - label="Specular Color Alpha" - name="specular_color_alpha" - width="240" /> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="-240" - top_pad="13" - width="160"> - Specular Exponent - </text> - <line_editor - border_style="line" - border_thickness="1" - default_text="0" - follows="left|top" - height="20" - layout="topleft" - left_pad="0" - top_pad="-18" - max_length_chars="255" - name="specular_exponent" - width="80" /> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="-240" - top_pad="10" - width="160"> - Environment Exponent - </text> - <line_editor - border_style="line" - border_thickness="1" - default_text="0" - follows="left|top" - height="20" - layout="topleft" - left_pad="0" - top_pad="-18" - max_length_chars="255" - name="environment_exponent" - width="80" /> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="-240" - top_pad="10" - width="160"> - Alpha Mask Cuttoff - </text> - <line_editor - border_style="line" - border_thickness="1" - default_text="0" - follows="left|top" - height="20" - layout="topleft" - left_pad="0" - top_pad="-18" - max_length_chars="255" - name="alpha_mask_cutoff" - width="80" /> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="-240" - top_pad="10" - width="160"> - Diffuse Alpha Mode - </text> - <line_editor - border_style="line" - border_thickness="1" - default_text="0" - follows="left|top" - height="20" - layout="topleft" - left_pad="0" - top_pad="-18" - max_length_chars="255" - name="diffuse_alpha_mode" - width="80" /> - </panel> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="22" - left="0" - top_pad="80" - width="810"> - <button - follows="left|top" - height="22" - label="Set Face Data" - layout="topleft" - name="put_set_button" - left="0" - top="0" - width="214"/> - <button - follows="left|top" - height="22" - label="Clear Face Data" - layout="topleft" - name="put_clear_button" - left_pad="20" - width="214"/> - <button - follows="left|top" - height="22" - label="Reset Input Values" - layout="topleft" - name="reset_put_values_button" - left_pad="146" - width="214"/> - </panel> - </panel> - <view_border - bevel_style="none" - follows="left|top" - height="0" - layout="topleft" - name="horiz_separator" - top_pad="10" - left="0" - width="810"/> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="125" - top_pad="20" - width="400"> - <text - height="13" - word_wrap="false" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="0" - top_pad="0" - width="160"> - Active selection - </text> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="300" - layout="topleft" - left="0" - top_pad="10" - tab_stop="false" - multi_select="true" - name="put_scroll_list" - width="600"> - <scroll_list.columns - label="Object ID" - name="object_id" - width="225" /> - <scroll_list.columns - label="Face Index" - name="face_index" - width="70" /> - <scroll_list.columns - label="MaterialID" - name="material_id" - dynamic_width="true" /> - </scroll_list> - </panel> - </panel> - </panel> - <panel - border="true" - bevel_style="none" - follows="left|top|right" - layout="topleft" - label="Viewable objects" - height="641" - top_pad="10" - width="1020"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="641" - top_pad="0" - width="1020"> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - left="0" - top_pad="10" - height="153" - width="835"> - <button - follows="left|top" - height="22" - label="Query Viewable Objects" - layout="topleft" - name="query_viewable_objects_button" - top_pad="0" - width="214"/> - <text - height="13" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="LabelTextColor" - length="1" - follows="left|top" - layout="topleft" - left="2" - top_pad="8" - width="150"> - Loading Status - </text> - <text - height="13" - word_wrap="true" - use_ellipses="false" - type="string" - text_color="MaterialGoodColor" - length="1" - follows="left|top" - layout="topleft" - left_pad="0" - name="query_status" - top_pad="-13" - width="400"> - </text> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="100" - layout="topleft" - top_pad="10" - left="0" - tab_stop="false" - multi_select="true" - name="viewable_objects_scroll_list" - width="835"> - <scroll_list.columns - label="Object ID" - name="object_id" - width="225" /> - <scroll_list.columns - label="Region" - name="region" - width="225" /> - <scroll_list.columns - label="Local ID" - name="local_id" - width="70" /> - <scroll_list.columns - label="Face" - name="face_index" - width="70" /> - <scroll_list.columns - label="Material ID" - name="material_id" - dynamic_width="true" /> - </scroll_list> - </panel> - <view_border - bevel_style="none" - follows="left|right|top" - height="0" - layout="topleft" - name="horiz_separator" - top_pad="10" - left="0" - width="1020"/> - <panel - border="false" - bevel_style="none" - follows="left|top|right" - layout="topleft" - height="457" - top_pad="10" - width="1020"> - <button - follows="left|top" - height="22" - label="Post Material ID" - layout="topleft" - name="post_button" - top_pad="0" - width="214"/> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - top_pad="10" - left="0" - tab_stop="false" - multi_select="false" - name="post_other_data_scroll_list" - width="775"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Specular Color" - name="specular_color" - width="120" /> - <scroll_list.columns - label="Specular Exponent" - name="specular_exponent" - width="112" /> - <scroll_list.columns - label="Env Intensity" - name="env_intensity" - width="80" /> - <scroll_list.columns - label="Alpha Mask Cutoff" - name="alpha_mask_cutoff" - width="110" /> - <scroll_list.columns - label="Diffuse Alpha Mode" - name="diffuse_alpha_mode" - width="118" /> - </scroll_list> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - top_pad="10" - tab_stop="false" - multi_select="false" - name="post_specular_map_scroll_list" - width="1020"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Specular Map" - name="specular_map_list_map" - width="225" /> - <scroll_list.columns - label="Offset X" - name="specular_map_list_offset_x" - width="112" /> - <scroll_list.columns - label="Offset Y" - name="specular_map_list_offset_y" - width="112" /> - <scroll_list.columns - label="Repeat X" - name="specular_map_list_repeat_x" - width="112" /> - <scroll_list.columns - label="Repeat Y" - name="specular_map_list_repeat_y" - width="112" /> - <scroll_list.columns - label="Rotation" - name="specular_map_list_rotation" - width="112" /> - </scroll_list> - <scroll_list - column_padding="0" - draw_heading="true" - follows="left|top|right" - height="135" - layout="topleft" - top_pad="10" - tab_stop="false" - multi_select="false" - name="post_normal_map_scroll_list" - width="1020"> - <scroll_list.columns - label="Material ID" - name="id" - dynamic_width="true" /> - <scroll_list.columns - label="Normal Map" - name="normal_map_list_map" - width="225" /> - <scroll_list.columns - label="Offset X" - name="normal_map_list_offset_x" - width="112" /> - <scroll_list.columns - label="Offset Y" - name="normal_map_list_offset_y" - width="112" /> - <scroll_list.columns - label="Repeat X" - name="normal_map_list_repeat_x" - width="112" /> - <scroll_list.columns - label="Repeat Y" - name="normal_map_list_repeat_y" - width="112" /> - <scroll_list.columns - label="Rotation" - name="normal_map_list_rotation" - width="112" /> - </scroll_list> - </panel> - </panel> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 721a1818dd..7e21013cac 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2584,8 +2584,8 @@ <menu_item_separator /> <menu_item_check - label="Lighting and Shadows" - name="Lighting and Shadows"> + label="Advanced Lighting Model" + name="Advanced Lighting Model"> <menu_item_check.on_check function="CheckControl" parameter="RenderDeferred" /> @@ -2622,16 +2622,6 @@ <menu_item_separator/> - <menu_item_call - label="Debug materials ..." - name="DebugMaterialsMenu"> - <menu_item_call.on_click - function="Floater.ToggleOrBringToFront" - parameter="floater_debug_materials" /> - </menu_item_call> - - <menu_item_separator /> - <menu_item_check label="Debug GL" name="Debug GL"> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 849f3ef73d..e249d51d91 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -262,7 +262,7 @@ control_name="RenderDeferred" height="16" initial_value="true" - label="Lighting and Shadows" + label="Advance Lighting Model" layout="topleft" left_delta="0" name="UseLightShaders" diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index 26b2d83351..21cbf9673d 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -155,36 +155,36 @@ follows="left|top" height="10" layout="topleft" - name="label shininess" left_pad="10" + name="label alphamode" text_readonly_color="LabelDisabledColor" - top_delta="6" + top_delta="0" width="90"> - Shininess + Alpha mode </text> <combo_box height="23" layout="topleft" - left_pad="10" - name="combobox shininess" - top_delta="-6" - width="90"> + left_delta="0" + name="combobox alphamode" + top_pad="4" + width="120"> <combo_box.item label="None" name="None" value="None" /> <combo_box.item - label="Low" - name="Low" - value="Low" /> + label="Alpha blending" + name="Alpha blending" + value="Alpha blending" /> <combo_box.item - label="Medium" - name="Medium" - value="Medium" /> + label="Alpha masking" + name="Alpha masking" + value="Alpha masking" /> <combo_box.item - label="High" - name="High" - value="High" /> + label="Emissive mask" + name="Emissive mask" + value="Emissive mask" /> </combo_box> <text type="string" @@ -192,7 +192,43 @@ follows="left|top" height="10" layout="topleft" - left_delta="-100" + left_delta="0" + name="label maskcutoff" + text_readonly_color="LabelDisabledColor" + top_pad="4" + width="90"> + Mask cutoff + </text> + <spinner + decimal_digits="3" + follows="left|top" + height="19" + initial_value="0" + layout="topleft" + top_pad="4" + left_delta="0" + name="maskcutoff" + width="80" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + fallback_image="locked_image.j2c" + follows="left|top" + height="80" + label="Texture " + layout="topleft" + left="10" + name="bumpytexture control" + tool_tip="Click to choose a picture" + top_delta="-55" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="10" name="label bumpiness" text_readonly_color="LabelDisabledColor" top_delta="0" @@ -278,13 +314,142 @@ label="weave" name="weave" value="weave" /> + <combo_box.item + label="Use texture" + name="Use texture" + value="Use texture" /> + </combo_box> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + fallback_image="locked_image.j2c" + follows="left|top" + height="80" + label="Texture " + layout="topleft" + left="10" + name="shinytexture control" + tool_tip="Click to choose a picture" + top_delta="-14" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + name="label shininess" + left_pad="10" + text_readonly_color="LabelDisabledColor" + top_delta="6" + width="90"> + Shininess + </text> + <combo_box + height="23" + layout="topleft" + left_pad="10" + name="combobox shininess" + top_delta="-6" + width="90"> + <combo_box.item + label="None" + name="None" + value="None" /> + <combo_box.item + label="Low" + name="Low" + value="Low" /> + <combo_box.item + label="Medium" + name="Medium" + value="Medium" /> + <combo_box.item + label="High" + name="High" + value="High" /> + <combo_box.item + label="Use texture" + name="Use texture" + value="Use texture" /> </combo_box> <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="-100" + name="label glossiness" + text_readonly_color="LabelDisabledColor" + top_pad="8" + width="116"> + Glossiness + </text> + <spinner + decimal_digits="3" + follows="left|top" + height="19" + initial_value="0" + layout="topleft" + top_delta="-4" + left_pad="10" + name="glossiness" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="-126" + name="label environment" + text_readonly_color="LabelDisabledColor" + top_pad="8" + width="116"> + Environment + </text> + <spinner + decimal_digits="3" + follows="left|top" + height="19" + initial_value="0" + layout="topleft" + top_delta="-4" + left_pad="10" + name="environment" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="-126" + name="label shinycolor" + text_readonly_color="LabelDisabledColor" + top_pad="8" + width="116"> + Color + </text> + <!-- label is blank because control places it below the box --> + <color_swatch + can_apply_immediately="true" + follows="left|top" + height="45" + label="" + layout="topleft" + left_pad="10" + name="shinycolorswatch" + tool_tip="Click to open color picker" + top_delta="-4" + width="64" /> + <text follows="left|top|right" height="9" layout="topleft" left="10" - top_delta="-8" + top_delta="-50" use_ellipses="true" read_only="true" name="media_info" @@ -370,14 +535,6 @@ name="TexScaleU" top_pad="5" width="265" /> - <!-- <check_box - height="19" - label="Flip" - layout="topleft" - left_pad="5" - name="checkbox flip s" - top_delta="0" - width="70" /> --> <spinner follows="left|top" height="19" @@ -390,14 +547,6 @@ max_val="100" name="TexScaleV" width="265" /> - <!-- <check_box - height="19" - label="Flip" - layout="topleft" - left_pad="5" - name="checkbox flip t" - top_delta="0" - width="70" /> --> <spinner decimal_digits="1" follows="left|top" @@ -411,16 +560,7 @@ min_val="0.1" name="rptctrl" width="265" /> - <!-- <button - follows="left|top" - height="19" - label="Apply" - label_selected="Apply" - layout="topleft" - left_pad="5" - name="button apply" - width="75" /> --> - <spinner + <spinner decimal_digits="2" follows="left|top" height="19" diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index d80150ef6d..9e0ac5115f 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -285,7 +285,7 @@ <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Luces y sombras" name="Lighting and Shadows"/> + <menu_item_check label="Luces y sombras" name="Advanced Lighting Model"/> <menu_item_check label="Sombras del sol/la luna/proyectores" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO y sombras suavizadas" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Capas alfa automáticas (deferidas)" name="Automatic Alpha Masks (deferred)"/> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 85020afe25..24bd6a2a95 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -307,7 +307,7 @@ <menu_item_call label="Base des infos de la texture sélectionnée" name="Selected Texture Info Basis"/> <menu_item_check label="Filaire" name="Wireframe"/> <menu_item_check label="Occlusion objet-objet" name="Object-Object Occlusion"/> - <menu_item_check label="Éclairage et ombres" name="Lighting and Shadows"/> + <menu_item_check label="Éclairage et ombres" name="Advanced Lighting Model"/> <menu_item_check label="Ombres du soleil/de la lune/des projecteurs" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO et lissage des ombres" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Débogage GL" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 547c5a9b73..cdfa97bb3c 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -286,7 +286,7 @@ <menu label="Rendering" name="Rendering"> <menu_item_check label="Assi" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Luci e ombre" name="Lighting and Shadows"/> + <menu_item_check label="Luci e ombre" name="Advanced Lighting Model"/> <menu_item_check label="Ombra dal sole, dalla luna e dai proiettori" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO e ombre fluide" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Maschera alfa automatica (differita)" name="Automatic Alpha Masks (deferred)"/> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index e60e6781c6..74859076c2 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -307,7 +307,7 @@ <menu_item_call label="選択したテクスチャ情報基底" name="Selected Texture Info Basis"/> <menu_item_check label="ワイヤーフレーム" name="Wireframe"/> <menu_item_check label="オブジェクト間オクルージョン" name="Object-Object Occlusion"/> - <menu_item_check label="光と影" name="Lighting and Shadows"/> + <menu_item_check label="光と影" name="Advanced Lighting Model"/> <menu_item_check label="太陽・月・プロジェクタからの影" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO と影の平滑化" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL デバッグ" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index 24c961fa26..e1725fc308 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -236,7 +236,7 @@ <menu label="Renderowanie" name="Rendering"> <menu_item_check label="Osie" name="Axes"/> <menu_item_check label="Tryb obrazu szkieletowego" name="Wireframe"/> - <menu_item_check label="Oświetlenie i cienie" name="Lighting and Shadows"/> + <menu_item_check label="Oświetlenie i cienie" name="Advanced Lighting Model"/> <menu_item_check label="Cienie Słońca/Księżyca/Projektory" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO and wygładzanie cienia" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Globalne oświetlenie (eksperymentalne)" name="Global Illumination"/> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index ca378c1b58..e8baff5af2 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -286,7 +286,7 @@ <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Iluminação e sombras" name="Lighting and Shadows"/> + <menu_item_check label="Iluminação e sombras" name="Advanced Lighting Model"/> <menu_item_check label="Sombras da projeção do sol/lua" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO e sombra suave" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Máscaras alpha automáticas (adiadas)" name="Automatic Alpha Masks (deferred)"/> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index d9425937c3..c292b8a287 100644 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -305,7 +305,7 @@ <menu_item_call label="Выбранная текстура в основе" name="Selected Texture Info Basis"/> <menu_item_check label="Каркас" name="Wireframe"/> <menu_item_check label="Смыкание объектов" name="Object-Object Occlusion"/> - <menu_item_check label="Освещение и тени" name="Lighting and Shadows"/> + <menu_item_check label="Освещение и тени" name="Advanced Lighting Model"/> <menu_item_check label="Тени от солнца, луны и прожекторов" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO и сглаживание теней" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Отладка GL" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 7a7faf6ac4..28f28db6d2 100644 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -305,7 +305,7 @@ <menu_item_call label="Seçilen Doku Bilgi Temeli" name="Selected Texture Info Basis"/> <menu_item_check label="Telkafes" name="Wireframe"/> <menu_item_check label="Görünen Nesneler İçin Gölgeleme" name="Object-Object Occlusion"/> - <menu_item_check label="Işıklandırma ve Gölgeler" name="Lighting and Shadows"/> + <menu_item_check label="Işıklandırma ve Gölgeler" name="Advanced Lighting Model"/> <menu_item_check label="Güneş/Ay/Projektörlerden Gelen Gölgeler" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO ve Gölge Yumuşatma" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL Hata Ayıklama" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index ac0e9e7e35..9a95e8c4d6 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -305,7 +305,7 @@ <menu_item_call label="已選取材質資訊基礎" name="Selected Texture Info Basis"/> <menu_item_check label="線框" name="Wireframe"/> <menu_item_check label="物件導向的遮蔽" name="Object-Object Occlusion"/> - <menu_item_check label="光線和陰影" name="Lighting and Shadows"/> + <menu_item_check label="光線和陰影" name="Advanced Lighting Model"/> <menu_item_check label="來自日/月/投影物的陰影" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="屏幕空間環境光遮蔽和陰影平滑技術" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL 除錯" name="Debug GL"/> |