# Added parameters to control water murkiness.
This was SVN commit r4013.
This commit is contained in:
parent
536d6f4cd3
commit
2b0e5d0b42
@ -1724,6 +1724,18 @@ void CRenderer::JSI_SetWaterShininess(JSContext* ctx, jsval newval)
|
||||
m->waterManager.m_Shininess = value;
|
||||
}
|
||||
|
||||
jsval CRenderer::JSI_GetWaterMurkiness(JSContext*)
|
||||
{
|
||||
return ToJSVal(m->waterManager.m_Murkiness);
|
||||
}
|
||||
|
||||
void CRenderer::JSI_SetWaterMurkiness(JSContext* ctx, jsval newval)
|
||||
{
|
||||
float value;
|
||||
if (!ToPrimitive<float>(ctx, newval, value)) return;
|
||||
m->waterManager.m_Murkiness = value;
|
||||
}
|
||||
|
||||
jsval CRenderer::JSI_GetWaterWaviness(JSContext*)
|
||||
{
|
||||
return ToJSVal(m->waterManager.m_Waviness);
|
||||
@ -1764,6 +1776,7 @@ void CRenderer::ScriptingInit()
|
||||
AddProperty(L"waterShininess", &CRenderer::JSI_GetWaterShininess, &CRenderer::JSI_SetWaterShininess);
|
||||
AddProperty(L"waterWaviness", &CRenderer::JSI_GetWaterWaviness, &CRenderer::JSI_SetWaterWaviness);
|
||||
AddProperty(L"waterRepeatPeriod", &CRenderer::JSI_GetWaterRepeatPeriod, &CRenderer::JSI_SetWaterRepeatPeriod);
|
||||
AddProperty(L"waterMurkiness", &CRenderer::JSI_GetWaterMurkiness, &CRenderer::JSI_SetWaterMurkiness);
|
||||
|
||||
CJSObject<CRenderer>::ScriptingInit("Renderer");
|
||||
}
|
||||
|
@ -319,6 +319,7 @@ protected:
|
||||
friend class TerrainRenderer;
|
||||
|
||||
// scripting
|
||||
static void ScriptingInit();
|
||||
jsval JSI_GetFastPlayerColor(JSContext*);
|
||||
void JSI_SetFastPlayerColor(JSContext* ctx, jsval newval);
|
||||
jsval JSI_GetRenderPath(JSContext*);
|
||||
@ -337,7 +338,8 @@ protected:
|
||||
void JSI_SetWaterWaviness(JSContext* ctx, jsval newval);
|
||||
jsval JSI_GetWaterRepeatPeriod(JSContext*);
|
||||
void JSI_SetWaterRepeatPeriod(JSContext* ctx, jsval newval);
|
||||
static void ScriptingInit();
|
||||
jsval JSI_GetWaterMurkiness(JSContext*);
|
||||
void JSI_SetWaterMurkiness(JSContext* ctx, jsval newval);
|
||||
|
||||
// patch rendering stuff
|
||||
void RenderPatches();
|
||||
|
@ -474,6 +474,9 @@ void TerrainRenderer::RenderWater()
|
||||
GLint sunColor = ogl_program_get_uniform_location( m->fancyWaterShader, "sunColor" );
|
||||
GLint shininess = ogl_program_get_uniform_location( m->fancyWaterShader, "shininess" );
|
||||
GLint waviness = ogl_program_get_uniform_location( m->fancyWaterShader, "waviness" );
|
||||
GLint murkiness = ogl_program_get_uniform_location( m->fancyWaterShader, "murkiness" );
|
||||
GLint fullDepth = ogl_program_get_uniform_location( m->fancyWaterShader, "fullDepth" );
|
||||
GLint tint = ogl_program_get_uniform_location( m->fancyWaterShader, "tint" );
|
||||
GLint cameraPos = ogl_program_get_uniform_location( m->fancyWaterShader, "cameraPos" );
|
||||
GLint reflectionMatrix = ogl_program_get_uniform_location( m->fancyWaterShader, "reflectionMatrix" );
|
||||
GLint refractionMatrix = ogl_program_get_uniform_location( m->fancyWaterShader, "refractionMatrix" );
|
||||
@ -487,6 +490,9 @@ void TerrainRenderer::RenderWater()
|
||||
pglUniform3fvARB( sunColor, 1, &lightEnv.m_SunColor.X );
|
||||
pglUniform1fARB( shininess, WaterMgr->m_Shininess );
|
||||
pglUniform1fARB( waviness, WaterMgr->m_Waviness );
|
||||
pglUniform1fARB( murkiness, WaterMgr->m_Murkiness );
|
||||
pglUniform1fARB( fullDepth, WaterMgr->m_WaterFullDepth );
|
||||
pglUniform3fvARB( tint, 1, WaterMgr->m_WaterTint.FloatArray() );
|
||||
pglUniformMatrix4fvARB( reflectionMatrix, 1, false, &WaterMgr->m_ReflectionMatrix._11 );
|
||||
pglUniformMatrix4fvARB( refractionMatrix, 1, false, &WaterMgr->m_RefractionMatrix._11 );
|
||||
pglUniform1iARB( normalMap, 0 ); // texture unit 0
|
||||
@ -565,8 +571,11 @@ void TerrainRenderer::RenderWater()
|
||||
{
|
||||
pglVertexAttrib1fARB( vertexDepth, WaterMgr->m_WaterHeight - terrainHeight );
|
||||
}
|
||||
|
||||
glColor4f(WaterMgr->m_WaterColor.r*losMod, WaterMgr->m_WaterColor.g*losMod, WaterMgr->m_WaterColor.b*losMod, alpha * FresnelScalar);
|
||||
else
|
||||
{
|
||||
glColor4f(WaterMgr->m_WaterColor.r*losMod, WaterMgr->m_WaterColor.g*losMod,
|
||||
WaterMgr->m_WaterColor.b*losMod, alpha * FresnelScalar);
|
||||
}
|
||||
pglMultiTexCoord2fARB(GL_TEXTURE0, vertX/repeatPeriod, vertZ/repeatPeriod);
|
||||
glVertex3f(vertX, WaterMgr->m_WaterHeight, vertZ);
|
||||
}
|
||||
|
@ -53,6 +53,8 @@ WaterManager::WaterManager()
|
||||
m_WaterTexTimer = 0.0;
|
||||
m_Shininess = 200.0f;
|
||||
m_Waviness = 8.0f;
|
||||
m_WaterTint = CColor(0.25f, 0.3f, 0.55f, 1.0f);
|
||||
m_Murkiness = 0.3f;
|
||||
m_RepeatPeriod = 16.0f;
|
||||
|
||||
for (uint i = 0; i < ARRAY_SIZE(m_WaterTexture); i++)
|
||||
|
@ -56,9 +56,11 @@ public:
|
||||
CMatrix3D m_RefractionMatrix;
|
||||
|
||||
// Shader parameters for fancy water
|
||||
CColor m_WaterTint;
|
||||
float m_RepeatPeriod;
|
||||
float m_Shininess;
|
||||
float m_Waviness;
|
||||
float m_Murkiness;
|
||||
|
||||
public:
|
||||
WaterManager();
|
||||
|
@ -1037,6 +1037,24 @@ JSBool setWaterColor( JSContext* cx, JSObject* UNUSED(globalObject), uint argc,
|
||||
return( JS_TRUE );
|
||||
}
|
||||
|
||||
// Sets the water tint (used to tint reflections in fancy water)
|
||||
JSBool setWaterTint( JSContext* cx, JSObject* UNUSED(globalObject), uint argc, jsval* argv, jsval* rval )
|
||||
{
|
||||
REQUIRE_PARAMS( 3, setWaterTint );
|
||||
float r,g,b;
|
||||
if(!ToPrimitive( g_ScriptingHost.GetContext(), argv[0], r )
|
||||
|| !ToPrimitive( g_ScriptingHost.GetContext(), argv[1], g )
|
||||
|| !ToPrimitive( g_ScriptingHost.GetContext(), argv[2], b ))
|
||||
{
|
||||
JS_ReportError( cx, "Invalid arguments" );
|
||||
*rval = JSVAL_VOID;
|
||||
return( JS_FALSE );
|
||||
}
|
||||
g_Renderer.GetWaterManager()->m_WaterTint = CColor(r, g, b, 1.0f);
|
||||
*rval = JSVAL_VOID;
|
||||
return( JS_TRUE );
|
||||
}
|
||||
|
||||
// Sets the max water alpha (achieved when it is at WaterFullDepth or deeper)
|
||||
JSBool setWaterMaxAlpha( JSContext* cx, JSObject* UNUSED(globalObject), uint argc, jsval* argv, jsval* rval )
|
||||
{
|
||||
@ -1203,7 +1221,8 @@ JSFunctionSpec ScriptFunctionTable[] =
|
||||
JS_FUNC(toggleWater, toggleWater, 0)
|
||||
JS_FUNC(setWaterHeight, setWaterHeight, 1)
|
||||
JS_FUNC(getWaterHeight, getWaterHeight, 0)
|
||||
JS_FUNC(setWaterColor, setWaterColor, 0)
|
||||
JS_FUNC(setWaterColor, setWaterColor, 3)
|
||||
JS_FUNC(setWaterTint, setWaterTint, 3)
|
||||
JS_FUNC(setWaterMaxAlpha, setWaterMaxAlpha, 0)
|
||||
JS_FUNC(setWaterFullDepth, setWaterFullDepth, 0)
|
||||
JS_FUNC(setWaterAlphaOffset, setWaterAlphaOffset, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user