Enabled post-processing features. Todo: Fix bloom

Fixed avatar shadows on AMD (and any other sane GLSL compiler)
Fixed windows compile:
 -curl version was updated after running develop.py. Not sure if applicable to linux/darwin
 -new llqtwebkit version on windows, since the old url is now invalid.
This commit is contained in:
Shyotl
2011-02-09 19:21:31 -06:00
parent 1919c00f2d
commit a44d633bc8
11 changed files with 166 additions and 163 deletions

View File

@@ -1,16 +1,11 @@
http://daniel.haxx.se/projects/c-ares/license.html
c-ares license
Copyright 1998 by the Massachusetts Institute of Technology.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and that
the name of M.I.T. not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
M.I.T. makes no representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied warranty.
Copyright 1998 by the Massachusetts Institute of Technology.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and that
the name of M.I.T. not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
M.I.T. makes no representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied warranty.

View File

@@ -1,6 +1,6 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2002, Daniel Stenberg, <daniel@haxx.se>.
Copyright (c) 1996 - 2010, Daniel Stenberg, <daniel@haxx.se>.
All rights reserved.
@@ -19,4 +19,3 @@ OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.

View File

@@ -42,6 +42,7 @@
#include "apr_poll.h"
#include "llapr.h"
#define CARES_STATICLIB
#include "llares.h"
#if defined(LL_WINDOWS)
@@ -104,7 +105,8 @@ void LLAres::QueryResponder::queryError(int code)
LLAres::LLAres() :
chan_(NULL), mInitSuccess(false)
{
if (ares_init(&chan_) != ARES_SUCCESS)
if (ares_library_init(ARES_LIB_INIT_ALL) != ARES_SUCCESS ||
ares_init(&chan_) != ARES_SUCCESS)
{
llwarns << "Could not succesfully initialize ares!" << llendl;
return;
@@ -468,7 +470,7 @@ bool LLAres::process(U64 timeout)
ll_init_apr();
}
int socks[ARES_GETSOCK_MAXNUM];
ares_socket_t socks[ARES_GETSOCK_MAXNUM];
apr_pollfd_t aprFds[ARES_GETSOCK_MAXNUM];
apr_int32_t nsds = 0;
int nactive = 0;

View File

@@ -37,6 +37,9 @@
#include "llsdserialize.h"
#include "llrender.h"
#include "lldir.h"
extern LLGLSLShader gPostColorFilterProgram;
extern LLGLSLShader gPostNightVisionProgram;
LLPostProcess * gPostProcess = NULL;
@@ -60,7 +63,7 @@ LLPostProcess::LLPostProcess(void) :
mNoiseTexture = NULL ;
mTempBloomTexture = NULL ;
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.*/
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL;
@@ -108,7 +111,7 @@ LLPostProcess::LLPostProcess(void) :
}
setSelectedEffect("default");
*/
//*/
}
LLPostProcess::~LLPostProcess(void)
@@ -145,7 +148,7 @@ void LLPostProcess::setSelectedEffect(std::string const & effectName)
void LLPostProcess::saveEffect(std::string const & effectName)
{
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.*/
mAllEffects[effectName] = tweaks;
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
@@ -156,7 +159,7 @@ void LLPostProcess::saveEffect(std::string const & effectName)
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
formatter->format(mAllEffects, effectsXML);
*/
//*/
}
void LLPostProcess::invalidate()
{
@@ -228,13 +231,13 @@ void LLPostProcess::applyShaders(void)
void LLPostProcess::applyColorFilterShader(void)
{
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.*/
gPostColorFilterProgram.bind();
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, sceneRenderTexture);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, mSceneRenderTexture.get()->getTexName());
getShaderUniforms(colorFilterUniforms, gPostColorFilterProgram.mProgramObject);
glUniform1iARB(colorFilterUniforms["RenderTexture"], 0);
@@ -256,7 +259,7 @@ void LLPostProcess::applyColorFilterShader(void)
/// Draw a screen space quad
drawOrthoQuad(screenW, screenH, QUAD_NORMAL);
gPostColorFilterProgram.unbind();
*/
//*/
}
void LLPostProcess::createColorFilterShader(void)
@@ -272,20 +275,20 @@ void LLPostProcess::createColorFilterShader(void)
void LLPostProcess::applyNightVisionShader(void)
{
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.*/
gPostNightVisionProgram.bind();
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE);
getShaderUniforms(nightVisionUniforms, gPostNightVisionProgram.mProgramObject);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, sceneRenderTexture);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, mSceneRenderTexture.get()->getTexName());
glUniform1iARB(nightVisionUniforms["RenderTexture"], 0);
gGL.getTexUnit(1)->activate();
gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->bindManual(LLTexUnit::TT_TEXTURE, noiseTexture);
gGL.getTexUnit(1)->bindManual(LLTexUnit::TT_TEXTURE, mNoiseTexture.get()->getTexName());
glUniform1iARB(nightVisionUniforms["NoiseTexture"], 1);
@@ -305,7 +308,7 @@ void LLPostProcess::applyNightVisionShader(void)
drawOrthoQuad(screenW, screenH, QUAD_NOISE);
gPostNightVisionProgram.unbind();
gGL.getTexUnit(0)->activate();
*/
//*/
}
void LLPostProcess::createNightVisionShader(void)
@@ -392,79 +395,79 @@ void LLPostProcess::copyFrameBuffer(U32 & texture, unsigned int width, unsigned
glCopyTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, 0, 0, width, height, 0);
}
inline void InitQuadArray(F32 *arr, const F32 x, const F32 y, const F32 width, const F32 height)
{
//Lower left
*(arr++)=x;
*(arr++)=y;
//Upper left
*(arr++)=x;
*(arr++)=y+height;
//Upper right
*(arr++)=x+width;
*(arr++)=y+height;
//Lower right
*(arr++)=x+width;
*(arr++)=y;
}
void LLPostProcess::drawOrthoQuad(unsigned int width, unsigned int height, QuadType type)
{
#if 0
float noiseX = 0.f;
float noiseY = 0.f;
float screenRatio = 1.0f;
#if 1
//Redid the logic here. Less cases. No longer using immediate mode.
bool second_tex = true;
//Vertex array used for all post-processing effects
static F32 verts[8];
//Texture coord array used for all post-processing effects
static F32 tex0[8];
//Texture coord array used for relevant post processing effects
static F32 tex1[8];
if (type == QUAD_NOISE){
noiseX = ((float) rand() / (float) RAND_MAX);
noiseY = ((float) rand() / (float) RAND_MAX);
screenRatio = (float) width / (float) height;
//Set up vertex array
InitQuadArray(verts, 0.f, 0.f, width, height);
//Set up first texture coords
if(type == QUAD_BLOOM_EXTRACT)
{
InitQuadArray(tex0, 0.f, 0.f, width*2.f, height*2.f);
second_tex = false;
}
else
{
InitQuadArray(tex0, 0.f, 0.f, width, height);
//Set up second texture coords
if( type == QUAD_BLOOM_COMBINE)
InitQuadArray(tex1, 0.f, 0.f, width*.5, height*.5);
else if( type == QUAD_NOISE )
InitQuadArray(tex1, ((float) rand() / (float) RAND_MAX), ((float) rand() / (float) RAND_MAX),
width * noiseTextureScale / height, noiseTextureScale);
else
second_tex = false;
}
//Prepare to render
glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer(2, GL_FLOAT, sizeof(F32)*2, verts);
if(second_tex) //tex1 setup
{
glClientActiveTextureARB(GL_TEXTURE1);
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(2, GL_FLOAT, sizeof(F32)*2, tex1);
}
glClientActiveTextureARB(GL_TEXTURE0);
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(2, GL_FLOAT, sizeof(F32)*2, tex0);
glBegin(GL_QUADS);
if (type != QUAD_BLOOM_EXTRACT){
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, (GLfloat) height);
} else {
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, (GLfloat) height * 2.0f);
}
if (type == QUAD_NOISE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB,
noiseX,
noiseTextureScale + noiseY);
} else if (type == QUAD_BLOOM_COMBINE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.f, (GLfloat) height * 0.5f);
}
glVertex2f(0.f, (GLfloat) screenH - height);
//Render
glDrawArrays(GL_QUADS, 0, sizeof(verts)/sizeof(verts[0]));
if (type != QUAD_BLOOM_EXTRACT){
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f);
} else {
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f);
}
if (type == QUAD_NOISE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB,
noiseX,
noiseY);
} else if (type == QUAD_BLOOM_COMBINE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.f, 0.f);
}
glVertex2f(0.f, (GLfloat) height + (screenH - height));
if (type != QUAD_BLOOM_EXTRACT){
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width, 0.f);
} else {
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width * 2.0f, 0.f);
}
if (type == QUAD_NOISE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB,
screenRatio * noiseTextureScale + noiseX,
noiseY);
} else if (type == QUAD_BLOOM_COMBINE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, (GLfloat) width * 0.5f, 0.f);
}
glVertex2f((GLfloat) width, (GLfloat) height + (screenH - height));
if (type != QUAD_BLOOM_EXTRACT){
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width, (GLfloat) height);
} else {
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width * 2.0f, (GLfloat) height * 2.0f);
}
if (type == QUAD_NOISE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB,
screenRatio * noiseTextureScale + noiseX,
noiseTextureScale + noiseY);
} else if (type == QUAD_BLOOM_COMBINE){
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, (GLfloat) width * 0.5f, (GLfloat) height * 0.5f);
}
glVertex2f((GLfloat) width, (GLfloat) screenH - height);
glEnd();
//Cleanup
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY ); //for tex0
if(second_tex)
{
glClientActiveTextureARB(GL_TEXTURE1);
glDisableClientState( GL_TEXTURE_COORD_ARRAY ); //for tex1
}
#endif
}
@@ -473,7 +476,7 @@ void LLPostProcess::viewOrthogonal(unsigned int width, unsigned int height)
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho( 0.f, (GLdouble) width , (GLdouble) height , 0.f, -1.f, 1.f );
glOrtho( 0.f, (GLdouble) width, 0.f, (GLdouble) height, -1.f, 1.f );
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

View File

@@ -10,6 +10,7 @@ uniform sampler2D diffuseMap;
void main()
{
gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy));
//gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy)); //This should not compile!
gl_FragColor = vec4(1,1,1,texture2D(diffuseMap, gl_TexCoord[0].xy).a * gl_Color.a);
}

View File

@@ -8,24 +8,20 @@
uniform sampler2D diffuseMap;
uniform float glowStrength;
float kern[4] = float[4](.25,.5,.8,1.0); //Initialize the correct (non nVidia cg) way
void main()
{
vec4 col = vec4(0.0, 0.0, 0.0, 0.0);
// ATI compiler falls down on array initialization.
float kern[8];
kern[0] = 0.25; kern[1] = 0.5; kern[2] = 0.8; kern[3] = 1.0;
kern[4] = 1.0; kern[5] = 0.8; kern[6] = 0.5; kern[7] = 0.25;
col += kern[0] * texture2D(diffuseMap, gl_TexCoord[0].xy);
col += kern[1] * texture2D(diffuseMap, gl_TexCoord[1].xy);
col += kern[2] * texture2D(diffuseMap, gl_TexCoord[2].xy);
col += kern[3] * texture2D(diffuseMap, gl_TexCoord[3].xy);
col += kern[4] * texture2D(diffuseMap, gl_TexCoord[0].zw);
col += kern[5] * texture2D(diffuseMap, gl_TexCoord[1].zw);
col += kern[6] * texture2D(diffuseMap, gl_TexCoord[2].zw);
col += kern[7] * texture2D(diffuseMap, gl_TexCoord[3].zw);
col += kern[3] * texture2D(diffuseMap, gl_TexCoord[0].zw);
col += kern[2] * texture2D(diffuseMap, gl_TexCoord[1].zw);
col += kern[1] * texture2D(diffuseMap, gl_TexCoord[2].zw);
col += kern[0] * texture2D(diffuseMap, gl_TexCoord[3].zw);
gl_FragColor = vec4(col.rgb * glowStrength, col.a);
}

View File

@@ -914,12 +914,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
gPipeline.mScreen.flush();
}
}
/// We copy the frame buffer straight into a texture here,
/// and then display it again with compositor effects.
/// Using render to texture would be faster/better, but I don't have a
/// grasp of their full display stack just yet.
// gPostProcess->apply(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight());
if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender)
{
@@ -933,7 +927,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
{
gFrameStats.start(LLFrameStats::RENDER_UI);
render_ui();
}
}
LLSpatialGroup::sNoDelete = FALSE;
}
@@ -1131,8 +1125,14 @@ void render_ui(F32 zoom_factor, int subfield)
if (to_texture)
{
gPipeline.renderBloom(gSnapshot, zoom_factor, subfield);
gPipeline.mScreen.flush(); //blit, etc.
}
/// We copy the frame buffer straight into a texture here,
/// and then display it again with compositor effects.
/// Using render to texture would be faster/better, but I don't have a
/// grasp of their full display stack just yet.
gPostProcess->apply(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight());
render_hud_elements();
render_hud_attachments();
}

View File

@@ -754,7 +754,7 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
}
}
#if 0
#if 1
// disabling loading of postprocess shaders until we fix
// ATI sampler2DRect compatibility.

View File

@@ -8,157 +8,157 @@
width="400">
<panel border="true" bottom="-400" follows="left|top|right|bottom" height="400"
label="Color Filter" left="1" mouse_opaque="false"
name="wmiColorFilterPanel" width="398">
<check_box bottom="-20" control_name="wmiColorFilterToggle" follows="left|top"
name="ColorFilterPanel" width="398">
<check_box bottom="-20" control_name="ColorFilterToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="wmiColorFilterToggle" width="200" />
left="14" mouse_opaque="true" name="ColorFilterToggle" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiColorFilterBrightnessText" v_pad="0"
left="10" mouse_opaque="true" name="ColorFilterBrightnessText" v_pad="0"
width="355">
Brightness
</text>
<slider bottom_delta="-30" can_edit_text="false"
control_name="wmiColorFilterBrightness" decimal_digits="2" follows="left"
control_name="ColorFilterBrightness" decimal_digits="2" follows="left"
height="10" increment="0.01" initial_val="1.0" label="" left="14"
max_val="4" min_val="0" mouse_opaque="true" name="wmiColorFilterBrightness"
max_val="4" min_val="0" mouse_opaque="true" name="ColorFilterBrightness"
show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiColorFilterSaturationText" v_pad="0"
left="10" mouse_opaque="true" name="ColorFilterSaturationText" v_pad="0"
width="355">
Saturation
</text>
<slider bottom_delta="-30" can_edit_text="false"
control_name="wmiColorFilterSaturation" decimal_digits="2" follows="left"
control_name="ColorFilterSaturation" decimal_digits="2" follows="left"
height="10" increment="0.01" initial_val="1.0" label="" left="14"
max_val="2" min_val="-1" mouse_opaque="true"
name="wmiColorFilterSaturation" show_text="true" value="1.0" width="200" />
name="ColorFilterSaturation" show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiColorFilterContrastText" v_pad="0"
left="10" mouse_opaque="true" name="ColorFilterContrastText" v_pad="0"
width="355">
Contrast
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiColorFilterContrast"
<slider bottom_delta="-30" can_edit_text="false" control_name="ColorFilterContrast"
decimal_digits="2" follows="left" height="10" increment="0.01"
initial_val="1.0" label="" left="14" max_val="4" min_val="0"
mouse_opaque="true" name="wmiColorFilterContrast" show_text="true"
mouse_opaque="true" name="ColorFilterContrast" show_text="true"
value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiColorFilterBaseText" v_pad="0"
left="10" mouse_opaque="true" name="ColorFilterBaseText" v_pad="0"
width="355">
Contrast Base Color
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiColorFilterBaseR"
<slider bottom_delta="-30" can_edit_text="false" control_name="ColorFilterBaseR"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="R" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="wmiColorFilterBaseR" show_text="true" value="1.0"
mouse_opaque="true" name="ColorFilterBaseR" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="false" control_name="wmiColorFilterBaseG"
<slider bottom_delta="-20" can_edit_text="false" control_name="ColorFilterBaseG"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="G" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="wmiColorFilterBaseG" show_text="true" value="1.0"
mouse_opaque="true" name="ColorFilterBaseG" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="false" control_name="wmiColorFilterBaseB"
<slider bottom_delta="-20" can_edit_text="false" control_name="ColorFilterBaseB"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="B" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="wmiColorFilterBaseB" show_text="true" value="1.0"
mouse_opaque="true" name="ColorFilterBaseB" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="false" control_name="wmiColorFilterBaseI"
<slider bottom_delta="-20" can_edit_text="false" control_name="ColorFilterBaseI"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="0.5" label="I" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="wmiColorFilterBaseI" show_text="true" value="1.0"
mouse_opaque="true" name="ColorFilterBaseI" show_text="true" value="1.0"
width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Night Vision" left="1" mouse_opaque="false"
name="wmiNightVisionPanel" width="398">
<check_box bottom="-20" control_name="wmiNightVisionToggle" follows="left|top"
name="NightVisionPanel" width="398">
<check_box bottom="-20" control_name="NightVisionToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="wmiNightVisionToggle" width="200" />
left="14" mouse_opaque="true" name="NightVisionToggle" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiNightVisionBrightMultText" v_pad="0"
left="10" mouse_opaque="true" name="NightVisionBrightMultText" v_pad="0"
width="355">
Light Amplification Multiple
</text>
<slider bottom_delta="-30" can_edit_text="false"
control_name="wmiNightVisionBrightMult" decimal_digits="3" follows="left"
control_name="NightVisionBrightMult" decimal_digits="3" follows="left"
height="10" increment="0.01" initial_val="3.0" label="" left="14"
max_val="10" min_val="1" mouse_opaque="true"
name="wmiNightVisionBrightMult" show_text="true" value="0.7" width="200" />
name="NightVisionBrightMult" show_text="true" value="0.7" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiNightVisionNoiseSizeText" v_pad="0"
left="10" mouse_opaque="true" name="NightVisionNoiseSizeText" v_pad="0"
width="355">
Noise Size
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiNightVisionNoiseSize"
<slider bottom_delta="-30" can_edit_text="false" control_name="NightVisionNoiseSize"
decimal_digits="3" follows="left" height="10" increment="0.1"
initial_val="1" label="" left="14" max_val="100" min_val="1"
mouse_opaque="true" name="wmiNightVisionNoiseSize" show_text="true"
mouse_opaque="true" name="NightVisionNoiseSize" show_text="true"
value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiNightVisionNoiseStrengthText"
left="10" mouse_opaque="true" name="NightVisionNoiseStrengthText"
v_pad="0" width="355">
Noise Strength
</text>
<slider bottom_delta="-30" can_edit_text="false"
control_name="wmiNightVisionNoiseStrength" decimal_digits="3"
control_name="NightVisionNoiseStrength" decimal_digits="3"
follows="left" height="10" increment="0.01" initial_val="0.3" label=""
left="14" max_val="1" min_val="0" mouse_opaque="true"
name="wmiNightVisionNoiseStrength" show_text="true" value="1.0" width="200" />
name="NightVisionNoiseStrength" show_text="true" value="1.0" width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Bloom" left="1" mouse_opaque="true"
name="wmiBloomPanel" width="398">
<check_box bottom="-20" control_name="wmiBloomToggle" follows="left|top"
name="BloomPanel" width="398">
<check_box bottom="-20" control_name="BloomToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="wmiBloomToggle" width="200" />
left="14" mouse_opaque="true" name="BloomToggle" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiBloomExtractText" v_pad="0"
left="10" mouse_opaque="true" name="BloomExtractText" v_pad="0"
width="355">
Luminosity Extraction
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiBloomExtract"
<slider bottom_delta="-30" can_edit_text="false" control_name="BloomExtract"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="0.9" label="" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="wmiBloomExtract" show_text="true" value="0.7"
mouse_opaque="true" name="BloomExtract" show_text="true" value="0.7"
width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiBloomSizeText" v_pad="0" width="355">
left="10" mouse_opaque="true" name="BloomSizeText" v_pad="0" width="355">
Bloom Size
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiBloomSize"
<slider bottom_delta="-30" can_edit_text="false" control_name="BloomSize"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="3.0" label="" left="14" max_val="20" min_val="0"
mouse_opaque="true" name="wmiBloomSize" show_text="true" value="1.0"
mouse_opaque="true" name="BloomSize" show_text="true" value="1.0"
width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="wmiBloomStrengthText" v_pad="0"
left="10" mouse_opaque="true" name="BloomStrengthText" v_pad="0"
width="355">
Bloom Strength
</text>
<slider bottom_delta="-30" can_edit_text="false" control_name="wmiBloomStrength"
<slider bottom_delta="-30" can_edit_text="false" control_name="BloomStrength"
decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.2" label="" left="14" max_val="10" min_val="0"
mouse_opaque="true" name="wmiBloomStrength" show_text="true" value="1.0"
mouse_opaque="true" name="BloomStrength" show_text="true" value="1.0"
width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"

View File

@@ -668,6 +668,10 @@
mouse_opaque="true" name="Day Cycle Editor" width="169">
<on_click function="World.DayCycle" userdata="editor" />
</menu_item_call>
<menu_item_call bottom="-173" enabled="false" height="19" label="Post-Processing Effects" left="0"
mouse_opaque="true" name="Post-Processing Effects" width="169">
<on_click function="World.PostProcess" userdata="editor" />
</menu_item_call>
</menu>
</menu>
<menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true"

View File

@@ -936,9 +936,12 @@ anguage Infrstructure (CLI) international standard</string>
<key>windows</key>
<map>
<key>md5sum</key>
<string>fa5041874761895a06a20782b8ba34a2</string>
<string>b678c4d18ea8e4fab42b20f8d0b2629a</string>
<!--<string>fa5041874761895a06a20782b8ba34a2</string>-->
<key>url</key>
<uri>http://liny-odell.users.sourceforge.net/llqtwebkit-windows-qt4.6-20101122.tar.bz2</uri>
<uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.7.1-20101221.tar.bz2</uri>
<!--<uri>http://liny-odell.users.sourceforge.net/llqtwebkit-windows-qt4.6-20101122.tar.bz2</uri>-->
</map>
</map>
</map>