mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 20:19:57 +00:00
fixed the water on local map
This commit is contained in:
parent
f5ffea4d4b
commit
21728020f6
8 changed files with 122 additions and 253 deletions
|
@ -109,6 +109,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const
|
||||||
sh::Factory::getInstance ().setGlobalSetting ("lighting", "true");
|
sh::Factory::getInstance ().setGlobalSetting ("lighting", "true");
|
||||||
sh::Factory::getInstance ().setGlobalSetting ("num_lights", Settings::Manager::getString ("num lights", "Objects"));
|
sh::Factory::getInstance ().setGlobalSetting ("num_lights", Settings::Manager::getString ("num lights", "Objects"));
|
||||||
sh::Factory::getInstance ().setGlobalSetting ("underwater_effects", Settings::Manager::getString("underwater effect", "Water"));
|
sh::Factory::getInstance ().setGlobalSetting ("underwater_effects", Settings::Manager::getString("underwater effect", "Water"));
|
||||||
|
sh::Factory::getInstance ().setGlobalSetting ("simple_water", Settings::Manager::getBool("shader", "Water") ? "false" : "true");
|
||||||
|
|
||||||
applyCompositors();
|
applyCompositors();
|
||||||
|
|
||||||
|
@ -638,6 +639,7 @@ void RenderingManager::processChangedSettings(const Settings::CategorySettingVec
|
||||||
{
|
{
|
||||||
applyCompositors();
|
applyCompositors();
|
||||||
sh::Factory::getInstance ().setGlobalSetting ("mrt_output", useMRT() ? "true" : "false");
|
sh::Factory::getInstance ().setGlobalSetting ("mrt_output", useMRT() ? "true" : "false");
|
||||||
|
sh::Factory::getInstance ().setGlobalSetting ("simple_water", Settings::Manager::getBool("shader", "Water") ? "false" : "true");
|
||||||
mObjects.rebuildStaticGeometry ();
|
mObjects.rebuildStaticGeometry ();
|
||||||
}
|
}
|
||||||
else if (it->second == "underwater effect" && it->first == "Water")
|
else if (it->second == "underwater effect" && it->first == "Water")
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "compositors.hpp"
|
#include "compositors.hpp"
|
||||||
|
|
||||||
#include <extern/shiny/Main/Factory.hpp>
|
#include <extern/shiny/Main/Factory.hpp>
|
||||||
|
#include <extern/shiny/Platforms/Ogre/OgreMaterial.hpp>
|
||||||
|
|
||||||
#include "../mwbase/environment.hpp"
|
#include "../mwbase/environment.hpp"
|
||||||
#include "../mwbase/world.hpp"
|
#include "../mwbase/world.hpp"
|
||||||
|
@ -40,6 +41,8 @@ Water::Water (Ogre::Camera *camera, RenderingManager* rend, const ESM::Cell* cel
|
||||||
sh::Factory::getInstance ().setSharedParameter ("waterTimer", sh::makeProperty<sh::FloatValue>(new sh::FloatValue(0)));
|
sh::Factory::getInstance ().setSharedParameter ("waterTimer", sh::makeProperty<sh::FloatValue>(new sh::FloatValue(0)));
|
||||||
sh::Factory::getInstance ().setSharedParameter ("waterSunFade_sunHeight", sh::makeProperty<sh::Vector2>(new sh::Vector2(1, 0.6)));
|
sh::Factory::getInstance ().setSharedParameter ("waterSunFade_sunHeight", sh::makeProperty<sh::Vector2>(new sh::Vector2(1, 0.6)));
|
||||||
|
|
||||||
|
mMaterial = MaterialManager::getSingleton().getByName("Water");
|
||||||
|
|
||||||
mTop = cell->water;
|
mTop = cell->water;
|
||||||
|
|
||||||
mIsUnderwater = false;
|
mIsUnderwater = false;
|
||||||
|
@ -66,8 +69,6 @@ Water::Water (Ogre::Camera *camera, RenderingManager* rend, const ESM::Cell* cel
|
||||||
applyRTT();
|
applyRTT();
|
||||||
applyVisibilityMask();
|
applyVisibilityMask();
|
||||||
|
|
||||||
|
|
||||||
createMaterial();
|
|
||||||
mWater->setMaterial(mMaterial);
|
mWater->setMaterial(mMaterial);
|
||||||
|
|
||||||
Ogre::Entity* underwaterDome = mSceneManager->createEntity ("underwater_dome.mesh");
|
Ogre::Entity* underwaterDome = mSceneManager->createEntity ("underwater_dome.mesh");
|
||||||
|
@ -84,6 +85,9 @@ Water::Water (Ogre::Camera *camera, RenderingManager* rend, const ESM::Cell* cel
|
||||||
|
|
||||||
setHeight(mTop);
|
setHeight(mTop);
|
||||||
|
|
||||||
|
sh::MaterialInstance* m = sh::Factory::getInstance ().getMaterialInstance ("Water");
|
||||||
|
m->setListener (this);
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------
|
||||||
// ---------------------------------- reflection debug overlay ----------------------------------
|
// ---------------------------------- reflection debug overlay ----------------------------------
|
||||||
|
@ -106,7 +110,7 @@ Water::Water (Ogre::Camera *camera, RenderingManager* rend, const ESM::Cell* cel
|
||||||
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
|
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
|
||||||
|
|
||||||
debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
|
debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
|
||||||
TextureUnitState *t = debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(mReflectionTexture->getName());
|
debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(mReflectionTexture->getName());
|
||||||
|
|
||||||
OverlayContainer* debugPanel;
|
OverlayContainer* debugPanel;
|
||||||
|
|
||||||
|
@ -238,29 +242,6 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Water::createMaterial()
|
|
||||||
{
|
|
||||||
if (mReflectionTarget == 0)
|
|
||||||
{
|
|
||||||
mMaterial = MaterialManager::getSingleton().getByName("Water_Fallback");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mMaterial = MaterialManager::getSingleton().getByName("Water");
|
|
||||||
sh::Factory::getInstance ().setTextureAlias ("WaterReflection", mReflectionTexture->getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
// these have to be set in code
|
|
||||||
std::string textureNames[32];
|
|
||||||
for (int i=0; i<32; ++i)
|
|
||||||
{
|
|
||||||
textureNames[i] = "textures\\water\\water" + StringConverter::toString(i, 2, '0') + ".dds";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mReflectionTarget == 0)
|
|
||||||
mMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Water::assignTextures()
|
void Water::assignTextures()
|
||||||
{
|
{
|
||||||
if (Settings::Manager::getBool("shader", "Water"))
|
if (Settings::Manager::getBool("shader", "Water"))
|
||||||
|
@ -292,7 +273,7 @@ void Water::updateVisible()
|
||||||
void Water::renderQueueStarted (Ogre::uint8 queueGroupId, const Ogre::String &invocation, bool &skipThisInvocation)
|
void Water::renderQueueStarted (Ogre::uint8 queueGroupId, const Ogre::String &invocation, bool &skipThisInvocation)
|
||||||
{
|
{
|
||||||
// We don't want the sky to get clipped by custom near clip plane (the water plane)
|
// We don't want the sky to get clipped by custom near clip plane (the water plane)
|
||||||
if (((queueGroupId < 20) || queueGroupId == RQG_UnderWater) && mReflectionRenderActive)
|
if (queueGroupId < 20 && mReflectionRenderActive)
|
||||||
{
|
{
|
||||||
mOldFarClip = mReflectionCamera->getFarClipDistance ();
|
mOldFarClip = mReflectionCamera->getFarClipDistance ();
|
||||||
mReflectionCamera->disableCustomNearClipPlane();
|
mReflectionCamera->disableCustomNearClipPlane();
|
||||||
|
@ -309,7 +290,7 @@ void Water::renderQueueStarted (Ogre::uint8 queueGroupId, const Ogre::String &in
|
||||||
|
|
||||||
void Water::renderQueueEnded (Ogre::uint8 queueGroupId, const Ogre::String &invocation, bool &repeatThisInvocation)
|
void Water::renderQueueEnded (Ogre::uint8 queueGroupId, const Ogre::String &invocation, bool &repeatThisInvocation)
|
||||||
{
|
{
|
||||||
if (((queueGroupId < 20) || queueGroupId == RQG_UnderWater) && mReflectionRenderActive)
|
if (queueGroupId < 20 && mReflectionRenderActive)
|
||||||
{
|
{
|
||||||
mReflectionCamera->setFarClipDistance (mOldFarClip);
|
mReflectionCamera->setFarClipDistance (mOldFarClip);
|
||||||
if (!mIsUnderwater)
|
if (!mIsUnderwater)
|
||||||
|
@ -363,6 +344,8 @@ void Water::applyRTT()
|
||||||
rtt->setActive(true);
|
rtt->setActive(true);
|
||||||
|
|
||||||
mReflectionTarget = rtt;
|
mReflectionTarget = rtt;
|
||||||
|
|
||||||
|
sh::Factory::getInstance ().setTextureAlias ("WaterReflection", mReflectionTexture->getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,7 +389,6 @@ void Water::processChangedSettings(const Settings::CategorySettingVector& settin
|
||||||
{
|
{
|
||||||
applyRTT();
|
applyRTT();
|
||||||
applyVisibilityMask();
|
applyVisibilityMask();
|
||||||
createMaterial();
|
|
||||||
mWater->setMaterial(mMaterial);
|
mWater->setMaterial(mMaterial);
|
||||||
assignTextures();
|
assignTextures();
|
||||||
}
|
}
|
||||||
|
@ -414,4 +396,27 @@ void Water::processChangedSettings(const Settings::CategorySettingVector& settin
|
||||||
applyVisibilityMask();
|
applyVisibilityMask();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Water::requestedConfiguration (sh::MaterialInstance* m, const std::string& configuration)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Water::createdConfiguration (sh::MaterialInstance* m, const std::string& configuration)
|
||||||
|
{
|
||||||
|
if (configuration == "local_map" || !Settings::Manager::getBool("shader", "Water"))
|
||||||
|
{
|
||||||
|
// for simple water, set animated texture names
|
||||||
|
// these have to be set in code
|
||||||
|
std::string textureNames[32];
|
||||||
|
for (int i=0; i<32; ++i)
|
||||||
|
{
|
||||||
|
textureNames[i] = "textures\\water\\water" + StringConverter::toString(i, 2, '0') + ".dds";
|
||||||
|
}
|
||||||
|
|
||||||
|
Ogre::Technique* t = static_cast<sh::OgreMaterial*>(m->getMaterial())->getOgreTechniqueForConfiguration(configuration);
|
||||||
|
t->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2);
|
||||||
|
t->getPass(0)->setDepthWriteEnabled (false);
|
||||||
|
t->getPass(0)->setSceneBlending (Ogre::SBT_TRANSPARENT_ALPHA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
#include "renderconst.hpp"
|
#include "renderconst.hpp"
|
||||||
|
|
||||||
|
#include <extern/shiny/Main/MaterialInstance.hpp>
|
||||||
|
|
||||||
namespace Ogre
|
namespace Ogre
|
||||||
{
|
{
|
||||||
class Camera;
|
class Camera;
|
||||||
|
@ -29,7 +31,7 @@ namespace MWRender {
|
||||||
class RenderingManager;
|
class RenderingManager;
|
||||||
|
|
||||||
/// Water rendering
|
/// Water rendering
|
||||||
class Water : public Ogre::RenderTargetListener, public Ogre::RenderQueueListener
|
class Water : public Ogre::RenderTargetListener, public Ogre::RenderQueueListener, public sh::MaterialInstanceListener
|
||||||
{
|
{
|
||||||
static const int CELL_SIZE = 8192;
|
static const int CELL_SIZE = 8192;
|
||||||
Ogre::Camera *mCamera;
|
Ogre::Camera *mCamera;
|
||||||
|
@ -74,7 +76,6 @@ namespace MWRender {
|
||||||
|
|
||||||
std::string mCompositorName;
|
std::string mCompositorName;
|
||||||
|
|
||||||
void createMaterial();
|
|
||||||
Ogre::MaterialPtr mMaterial;
|
Ogre::MaterialPtr mMaterial;
|
||||||
|
|
||||||
Ogre::Camera* mReflectionCamera;
|
Ogre::Camera* mReflectionCamera;
|
||||||
|
@ -104,6 +105,9 @@ namespace MWRender {
|
||||||
void changeCell(const ESM::Cell* cell);
|
void changeCell(const ESM::Cell* cell);
|
||||||
void setHeight(const float height);
|
void setHeight(const float height);
|
||||||
|
|
||||||
|
virtual void requestedConfiguration (sh::MaterialInstance* m, const std::string& configuration);
|
||||||
|
virtual void createdConfiguration (sh::MaterialInstance* m, const std::string& configuration);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
2
extern/shiny
vendored
2
extern/shiny
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit 4853ea7351edced75a48662da5f3e857961e0b47
|
Subproject commit 7af50bf4463a828ee0e8cb72c93445c793864bf9
|
|
@ -13,4 +13,5 @@ configuration local_map
|
||||||
lighting false
|
lighting false
|
||||||
shadows false
|
shadows false
|
||||||
shadows_pssm false
|
shadows_pssm false
|
||||||
|
simple_water true
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,11 @@ material Water
|
||||||
{
|
{
|
||||||
pass
|
pass
|
||||||
{
|
{
|
||||||
|
emissive 0.6 0.7 1.0
|
||||||
|
ambient 0 0 0
|
||||||
|
diffuse 0 0 0 1
|
||||||
|
specular 0 0 0 32
|
||||||
|
|
||||||
vertex_program water_vertex
|
vertex_program water_vertex
|
||||||
fragment_program water_fragment
|
fragment_program water_fragment
|
||||||
|
|
||||||
|
@ -29,6 +34,15 @@ material Water
|
||||||
{
|
{
|
||||||
direct_texture water_nm.png
|
direct_texture water_nm.png
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// for simple_water
|
||||||
|
texture_unit animatedTexture
|
||||||
|
{
|
||||||
|
create_in_ffp true
|
||||||
|
scale 0.1 0.1
|
||||||
|
alpha_op_ex source1 src_manual src_current 0.7
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,68 @@
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SIMPLE_WATER @shGlobalSettingBool(simple_water)
|
||||||
|
|
||||||
|
|
||||||
|
#if SIMPLE_WATER
|
||||||
|
// --------------------------------------- SIMPLE WATER ---------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#define MRT @shGlobalSettingBool(mrt_output)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SH_VERTEX_SHADER
|
||||||
|
|
||||||
|
SH_BEGIN_PROGRAM
|
||||||
|
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
|
||||||
|
shInput(float2, uv0)
|
||||||
|
shOutput(float2, UV)
|
||||||
|
shOutput(float, depth)
|
||||||
|
|
||||||
|
SH_START_PROGRAM
|
||||||
|
{
|
||||||
|
shOutputPosition = shMatrixMult(wvp, shInputPosition);
|
||||||
|
UV = uv0;
|
||||||
|
depth = shOutputPosition.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
SH_BEGIN_PROGRAM
|
||||||
|
shSampler2D(animatedTexture)
|
||||||
|
shInput(float2, UV)
|
||||||
|
shInput(float, depth)
|
||||||
|
#if MRT
|
||||||
|
shDeclareMrtOutput(1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
shUniform(float3, fogColor) @shAutoConstant(fogColor, fog_colour)
|
||||||
|
shUniform(float4, fogParams) @shAutoConstant(fogParams, fog_params)
|
||||||
|
|
||||||
|
|
||||||
|
SH_START_PROGRAM
|
||||||
|
{
|
||||||
|
shOutputColour(0).xyz = shSample(animatedTexture, UV * 15).xyz * float3(0.6, 0.7, 1.0);
|
||||||
|
shOutputColour(0).w = 0.7;
|
||||||
|
|
||||||
|
float fogValue = shSaturate((depth - fogParams.y) * fogParams.w);
|
||||||
|
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, fogColor, fogValue);
|
||||||
|
|
||||||
|
#if MRT
|
||||||
|
shOutputColour(1) = float4(1,1,1,1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Inspired by Blender GLSL Water by martinsh ( http://devlog-martinsh.blogspot.de/2012/07/waterundewater-shader-wip.html )
|
// Inspired by Blender GLSL Water by martinsh ( http://devlog-martinsh.blogspot.de/2012/07/waterundewater-shader-wip.html )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SH_VERTEX_SHADER
|
#ifdef SH_VERTEX_SHADER
|
||||||
|
|
||||||
SH_BEGIN_PROGRAM
|
SH_BEGIN_PROGRAM
|
||||||
|
@ -241,3 +302,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,221 +0,0 @@
|
||||||
vertex_program UnderwaterEffectVP cg
|
|
||||||
{
|
|
||||||
source underwater.cg
|
|
||||||
entry_point main_vp
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
|
|
||||||
default_params
|
|
||||||
{
|
|
||||||
param_named_auto worldViewProj worldviewproj_matrix
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fragment_program UnderwaterEffectFP_NoMRT cg
|
|
||||||
{
|
|
||||||
source underwater.cg
|
|
||||||
entry_point main_fp_nomrt
|
|
||||||
profiles ps_2_0 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program UnderwaterEffectFP cg
|
|
||||||
{
|
|
||||||
source underwater.cg
|
|
||||||
entry_point main_fp
|
|
||||||
profiles ps_2_0 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program Water_VP cg
|
|
||||||
{
|
|
||||||
source water.cg
|
|
||||||
entry_point main_vp
|
|
||||||
profiles vs_2_x arbvp1
|
|
||||||
|
|
||||||
default_params
|
|
||||||
{
|
|
||||||
param_named_auto wvpMat worldviewproj_matrix
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program Water_FP cg
|
|
||||||
{
|
|
||||||
source water.cg
|
|
||||||
entry_point main_fp
|
|
||||||
profiles ps_2_x arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
material __Water
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
cull_hardware none
|
|
||||||
|
|
||||||
vertex_program_ref Water_VP
|
|
||||||
{
|
|
||||||
param_named_auto camPosObjSpace camera_position_object_space
|
|
||||||
}
|
|
||||||
fragment_program_ref Water_FP
|
|
||||||
{
|
|
||||||
param_named_auto time time 0.1
|
|
||||||
//param_named_auto fogColour fog_colour
|
|
||||||
//param_named_auto fogParams fog_params
|
|
||||||
param_named_auto renderTargetFlipping render_target_flipping
|
|
||||||
param_named_auto far far_clip_distance
|
|
||||||
param_named_auto lightPosObjSpace0 light_position_object_space 0
|
|
||||||
param_named_auto lightSpecularColour0 light_specular_colour 0
|
|
||||||
param_named isUnderwater float 0
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit reflectionMap
|
|
||||||
{
|
|
||||||
texture WaterReflection
|
|
||||||
tex_address_mode clamp
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit refractionMap
|
|
||||||
{
|
|
||||||
tex_address_mode clamp
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit depthMap
|
|
||||||
{
|
|
||||||
tex_address_mode clamp
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit normalMap
|
|
||||||
{
|
|
||||||
texture WaterNormal2.tga
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
scheme Fallback
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
cull_hardware none
|
|
||||||
scene_blend alpha_blend
|
|
||||||
depth_write off
|
|
||||||
diffuse 0 0 0 1
|
|
||||||
emissive 0.6 0.7 1.0
|
|
||||||
ambient 0 0 0
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
// texture names set via code
|
|
||||||
scale 0.1 0.1
|
|
||||||
alpha_op_ex source1 src_manual src_current 0.7
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
material Water_Fallback
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
scheme Fallback
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
cull_hardware none
|
|
||||||
scene_blend alpha_blend
|
|
||||||
depth_write off
|
|
||||||
diffuse 0 0 0 1
|
|
||||||
emissive 0.6 0.7 1.0
|
|
||||||
ambient 0 0 0
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
// texture names set via code
|
|
||||||
scale 0.1 0.1
|
|
||||||
alpha_op_ex source1 src_manual src_current 0.7
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material Water/CompositorNoMRT
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
depth_check off
|
|
||||||
vertex_program_ref UnderwaterEffectVP
|
|
||||||
{
|
|
||||||
param_named_auto timeVal time 0.25
|
|
||||||
param_named scale float 0.1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref UnderwaterEffectFP_NoMRT
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit RT
|
|
||||||
{
|
|
||||||
tex_coord_set 0
|
|
||||||
tex_address_mode clamp
|
|
||||||
filtering linear linear linear
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture WaterNormal2.tga 2d
|
|
||||||
tex_coord_set 1
|
|
||||||
//tex_address_mode clamp
|
|
||||||
filtering linear linear linear
|
|
||||||
}
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture caustic_0.png 2d
|
|
||||||
tex_coord_set 2
|
|
||||||
//tex_address_mode clamp
|
|
||||||
filtering linear linear linear
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material Water/Compositor
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
depth_check off
|
|
||||||
vertex_program_ref UnderwaterEffectVP
|
|
||||||
{
|
|
||||||
param_named_auto timeVal time 0.25
|
|
||||||
param_named scale float 0.1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref UnderwaterEffectFP
|
|
||||||
{
|
|
||||||
param_named_auto far far_clip_distance
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit RT
|
|
||||||
{
|
|
||||||
tex_coord_set 0
|
|
||||||
tex_address_mode clamp
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture WaterNormal2.tga 2d
|
|
||||||
tex_coord_set 2
|
|
||||||
}
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture caustic_0.png 2d
|
|
||||||
tex_coord_set 3
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit DepthMap
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue