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 Copyright 1998 by the Massachusetts Institute of Technology.
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.
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 AND PERMISSION NOTICE
Copyright (c) 1996 - 2002, Daniel Stenberg, <daniel@haxx.se>. Copyright (c) 1996 - 2010, Daniel Stenberg, <daniel@haxx.se>.
All rights reserved. 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 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 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. in this Software without prior written authorization of the copyright holder.

View File

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

View File

@@ -37,6 +37,9 @@
#include "llsdserialize.h" #include "llsdserialize.h"
#include "llrender.h" #include "llrender.h"
#include "lldir.h"
extern LLGLSLShader gPostColorFilterProgram;
extern LLGLSLShader gPostNightVisionProgram;
LLPostProcess * gPostProcess = NULL; LLPostProcess * gPostProcess = NULL;
@@ -60,7 +63,7 @@ LLPostProcess::LLPostProcess(void) :
mNoiseTexture = NULL ; mNoiseTexture = NULL ;
mTempBloomTexture = 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)); std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL; LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL;
@@ -108,7 +111,7 @@ LLPostProcess::LLPostProcess(void) :
} }
setSelectedEffect("default"); setSelectedEffect("default");
*/ //*/
} }
LLPostProcess::~LLPostProcess(void) LLPostProcess::~LLPostProcess(void)
@@ -145,7 +148,7 @@ void LLPostProcess::setSelectedEffect(std::string const & effectName)
void LLPostProcess::saveEffect(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; mAllEffects[effectName] = tweaks;
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME)); 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(); LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
formatter->format(mAllEffects, effectsXML); formatter->format(mAllEffects, effectsXML);
*/ //*/
} }
void LLPostProcess::invalidate() void LLPostProcess::invalidate()
{ {
@@ -228,13 +231,13 @@ void LLPostProcess::applyShaders(void)
void LLPostProcess::applyColorFilterShader(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(); gPostColorFilterProgram.bind();
gGL.getTexUnit(0)->activate(); gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE); 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); getShaderUniforms(colorFilterUniforms, gPostColorFilterProgram.mProgramObject);
glUniform1iARB(colorFilterUniforms["RenderTexture"], 0); glUniform1iARB(colorFilterUniforms["RenderTexture"], 0);
@@ -256,7 +259,7 @@ void LLPostProcess::applyColorFilterShader(void)
/// Draw a screen space quad /// Draw a screen space quad
drawOrthoQuad(screenW, screenH, QUAD_NORMAL); drawOrthoQuad(screenW, screenH, QUAD_NORMAL);
gPostColorFilterProgram.unbind(); gPostColorFilterProgram.unbind();
*/ //*/
} }
void LLPostProcess::createColorFilterShader(void) void LLPostProcess::createColorFilterShader(void)
@@ -272,20 +275,20 @@ void LLPostProcess::createColorFilterShader(void)
void LLPostProcess::applyNightVisionShader(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(); gPostNightVisionProgram.bind();
gGL.getTexUnit(0)->activate(); gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE); gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE);
getShaderUniforms(nightVisionUniforms, gPostNightVisionProgram.mProgramObject); 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); glUniform1iARB(nightVisionUniforms["RenderTexture"], 0);
gGL.getTexUnit(1)->activate(); gGL.getTexUnit(1)->activate();
gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE); 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); glUniform1iARB(nightVisionUniforms["NoiseTexture"], 1);
@@ -305,7 +308,7 @@ void LLPostProcess::applyNightVisionShader(void)
drawOrthoQuad(screenW, screenH, QUAD_NOISE); drawOrthoQuad(screenW, screenH, QUAD_NOISE);
gPostNightVisionProgram.unbind(); gPostNightVisionProgram.unbind();
gGL.getTexUnit(0)->activate(); gGL.getTexUnit(0)->activate();
*/ //*/
} }
void LLPostProcess::createNightVisionShader(void) 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); 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) void LLPostProcess::drawOrthoQuad(unsigned int width, unsigned int height, QuadType type)
{ {
#if 0 #if 1
float noiseX = 0.f; //Redid the logic here. Less cases. No longer using immediate mode.
float noiseY = 0.f; bool second_tex = true;
float screenRatio = 1.0f; //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){ //Set up vertex array
noiseX = ((float) rand() / (float) RAND_MAX); InitQuadArray(verts, 0.f, 0.f, width, height);
noiseY = ((float) rand() / (float) RAND_MAX);
screenRatio = (float) width / (float) 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); //Render
if (type != QUAD_BLOOM_EXTRACT){ glDrawArrays(GL_QUADS, 0, sizeof(verts)/sizeof(verts[0]));
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);
if (type != QUAD_BLOOM_EXTRACT){ //Cleanup
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f); glDisableClientState( GL_VERTEX_ARRAY );
} else { glDisableClientState( GL_TEXTURE_COORD_ARRAY ); //for tex0
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f); if(second_tex)
{
glClientActiveTextureARB(GL_TEXTURE1);
glDisableClientState( GL_TEXTURE_COORD_ARRAY ); //for tex1
} }
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();
#endif #endif
} }
@@ -473,7 +476,7 @@ void LLPostProcess::viewOrthogonal(unsigned int width, unsigned int height)
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glPushMatrix(); glPushMatrix();
glLoadIdentity(); 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); glMatrixMode(GL_MODELVIEW);
glPushMatrix(); glPushMatrix();
glLoadIdentity(); glLoadIdentity();

View File

@@ -10,6 +10,7 @@ uniform sampler2D diffuseMap;
void main() 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 sampler2D diffuseMap;
uniform float glowStrength; uniform float glowStrength;
float kern[4] = float[4](.25,.5,.8,1.0); //Initialize the correct (non nVidia cg) way
void main() void main()
{ {
vec4 col = vec4(0.0, 0.0, 0.0, 0.0); 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[0] * texture2D(diffuseMap, gl_TexCoord[0].xy);
col += kern[1] * texture2D(diffuseMap, gl_TexCoord[1].xy); col += kern[1] * texture2D(diffuseMap, gl_TexCoord[1].xy);
col += kern[2] * texture2D(diffuseMap, gl_TexCoord[2].xy); col += kern[2] * texture2D(diffuseMap, gl_TexCoord[2].xy);
col += kern[3] * texture2D(diffuseMap, gl_TexCoord[3].xy); col += kern[3] * texture2D(diffuseMap, gl_TexCoord[3].xy);
col += kern[4] * texture2D(diffuseMap, gl_TexCoord[0].zw); col += kern[3] * texture2D(diffuseMap, gl_TexCoord[0].zw);
col += kern[5] * texture2D(diffuseMap, gl_TexCoord[1].zw); col += kern[2] * texture2D(diffuseMap, gl_TexCoord[1].zw);
col += kern[6] * texture2D(diffuseMap, gl_TexCoord[2].zw); col += kern[1] * texture2D(diffuseMap, gl_TexCoord[2].zw);
col += kern[7] * texture2D(diffuseMap, gl_TexCoord[3].zw); col += kern[0] * texture2D(diffuseMap, gl_TexCoord[3].zw);
gl_FragColor = vec4(col.rgb * glowStrength, col.a); gl_FragColor = vec4(col.rgb * glowStrength, col.a);
} }

View File

@@ -915,12 +915,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
} }
} }
/// 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) if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender)
{ {
gPipeline.renderDeferredLighting(); gPipeline.renderDeferredLighting();
@@ -1131,7 +1125,13 @@ void render_ui(F32 zoom_factor, int subfield)
if (to_texture) if (to_texture)
{ {
gPipeline.renderBloom(gSnapshot, zoom_factor, subfield); 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_elements();
render_hud_attachments(); render_hud_attachments();

View File

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

View File

@@ -8,157 +8,157 @@
width="400"> width="400">
<panel border="true" bottom="-400" follows="left|top|right|bottom" height="400" <panel border="true" bottom="-400" follows="left|top|right|bottom" height="400"
label="Color Filter" left="1" mouse_opaque="false" label="Color Filter" left="1" mouse_opaque="false"
name="wmiColorFilterPanel" width="398"> name="ColorFilterPanel" width="398">
<check_box bottom="-20" control_name="wmiColorFilterToggle" follows="left|top" <check_box bottom="-20" control_name="ColorFilterToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable" 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" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Brightness Brightness
</text> </text>
<slider bottom_delta="-30" can_edit_text="false" <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" 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" /> show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Saturation Saturation
</text> </text>
<slider bottom_delta="-30" can_edit_text="false" <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" height="10" increment="0.01" initial_val="1.0" label="" left="14"
max_val="2" min_val="-1" mouse_opaque="true" 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" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Contrast Contrast
</text> </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" decimal_digits="2" follows="left" height="10" increment="0.01"
initial_val="1.0" label="" left="14" max_val="4" min_val="0" 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" /> value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Contrast Base Color Contrast Base Color
</text> </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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="R" left="14" max_val="1" min_val="0" 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" /> 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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="G" left="14" max_val="1" min_val="0" 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" /> 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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.0" label="B" left="14" max_val="1" min_val="0" 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" /> 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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="0.5" label="I" left="14" max_val="1" min_val="0" 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" /> width="200" />
</panel> </panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400" <panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Night Vision" left="1" mouse_opaque="false" label="Night Vision" left="1" mouse_opaque="false"
name="wmiNightVisionPanel" width="398"> name="NightVisionPanel" width="398">
<check_box bottom="-20" control_name="wmiNightVisionToggle" follows="left|top" <check_box bottom="-20" control_name="NightVisionToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable" 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" <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" bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Light Amplification Multiple Light Amplification Multiple
</text> </text>
<slider bottom_delta="-30" can_edit_text="false" <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" height="10" increment="0.01" initial_val="3.0" label="" left="14"
max_val="10" min_val="1" mouse_opaque="true" 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" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Noise Size Noise Size
</text> </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" decimal_digits="3" follows="left" height="10" increment="0.1"
initial_val="1" label="" left="14" max_val="100" min_val="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" /> value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> v_pad="0" width="355">
Noise Strength Noise Strength
</text> </text>
<slider bottom_delta="-30" can_edit_text="false" <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="" follows="left" height="10" increment="0.01" initial_val="0.3" label=""
left="14" max_val="1" min_val="0" mouse_opaque="true" 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>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400" <panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Bloom" left="1" mouse_opaque="true" label="Bloom" left="1" mouse_opaque="true"
name="wmiBloomPanel" width="398"> name="BloomPanel" width="398">
<check_box bottom="-20" control_name="wmiBloomToggle" follows="left|top" <check_box bottom="-20" control_name="BloomToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable" 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" <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" bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Luminosity Extraction Luminosity Extraction
</text> </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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="0.9" label="" left="14" max_val="1" min_val="0" 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" /> width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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 Bloom Size
</text> </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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="3.0" label="" left="14" max_val="20" min_val="0" 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" /> width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <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" bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16" 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"> width="355">
Bloom Strength Bloom Strength
</text> </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" decimal_digits="3" follows="left" height="10" increment="0.01"
initial_val="1.2" label="" left="14" max_val="10" min_val="0" 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" /> width="200" />
</panel> </panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400" <panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"

View File

@@ -667,6 +667,10 @@
<menu_item_call bottom="-151" enabled="false" height="19" label="Day Cycle Editor" left="0" <menu_item_call bottom="-151" enabled="false" height="19" label="Day Cycle Editor" left="0"
mouse_opaque="true" name="Day Cycle Editor" width="169"> mouse_opaque="true" name="Day Cycle Editor" width="169">
<on_click function="World.DayCycle" userdata="editor" /> <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_item_call>
</menu> </menu>
</menu> </menu>

View File

@@ -936,9 +936,12 @@ anguage Infrstructure (CLI) international standard</string>
<key>windows</key> <key>windows</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>fa5041874761895a06a20782b8ba34a2</string> <string>b678c4d18ea8e4fab42b20f8d0b2629a</string>
<!--<string>fa5041874761895a06a20782b8ba34a2</string>-->
<key>url</key> <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> </map>
</map> </map>