parent
c2cbb40a0e
commit
6015e2a505
|
|
@ -2416,14 +2416,21 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
|
|||
{
|
||||
LLVector3 pnorm;
|
||||
F32 height = region->getWaterHeight();
|
||||
pnorm.setVec(0,0,-(F32)water_clip);
|
||||
plane.setVec(pnorm, height * pnorm.mV[VZ]);
|
||||
if (water_clip < 0)
|
||||
{ //camera is above water, clip plane points up
|
||||
pnorm.setVec(0,0,1);
|
||||
plane.setVec(pnorm, -height);
|
||||
}
|
||||
else if (water_clip > 0)
|
||||
{ //camera is below water, clip plane points down
|
||||
pnorm = LLVector3(0,0,-1);
|
||||
plane.setVec(pnorm, height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
glh::matrix4f modelview = get_last_modelview();
|
||||
glh::matrix4f proj = get_last_projection();
|
||||
|
||||
glh::matrix4f proj = get_last_projection();
|
||||
LLGLUserClipPlane clip(plane, modelview, proj, water_clip != 0 && LLPipeline::sReflectionRender);
|
||||
|
||||
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
|
||||
|
|
@ -2449,9 +2456,9 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
|
|||
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
|
||||
{
|
||||
LLViewerRegion* region = *iter;
|
||||
if (water_clip != 0 && LLPipeline::sReflectionRender)
|
||||
if (water_clip != 0)
|
||||
{
|
||||
LLPlane plane(LLVector3(0,0, -(F32)water_clip), water_clip * region->getWaterHeight());
|
||||
LLPlane plane(LLVector3(0,0, (F32) -water_clip), (F32) water_clip*region->getWaterHeight());
|
||||
camera.setUserClipPlane(plane);
|
||||
}
|
||||
else
|
||||
|
|
@ -9830,22 +9837,20 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
F32 plane_d;
|
||||
|
||||
S32 water_clip = 0;
|
||||
|
||||
if (LLViewerCamera::getInstance()->cameraUnderWater())
|
||||
{
|
||||
//camera is below water, clip plane points down
|
||||
water_clip = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//camera is above water, clip plane points up
|
||||
if (!LLViewerCamera::getInstance()->cameraUnderWater())
|
||||
{ //camera is above water, clip plane points up
|
||||
pnorm.setVec(0,0,1);
|
||||
plane_d = -water_height;
|
||||
plane.setVec(pnorm, -distance_to_water);
|
||||
water_clip = -1;
|
||||
}
|
||||
|
||||
//camera is below water, clip plane points down
|
||||
pnorm = LLVector3(0,0,-(F32)water_clip);
|
||||
plane_d = water_height * pnorm.mV[VZ];
|
||||
plane.setVec(pnorm, distance_to_water * pnorm.mV[VZ]);
|
||||
else
|
||||
{ //camera is below water, clip plane points down
|
||||
pnorm = LLVector3(0,0,-1);
|
||||
plane_d = water_height;
|
||||
plane.setVec(pnorm, distance_to_water);
|
||||
water_clip = 1;
|
||||
}
|
||||
|
||||
bool materials_in_water = false;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue