mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 03:29:55 +00:00
Change default depth test mode to <= (#7040)
This commit is contained in:
parent
cf3badb8a4
commit
5433ecf861
7 changed files with 11 additions and 8 deletions
|
@ -69,6 +69,7 @@
|
||||||
Bug #6993: Shooting your last round of ammunition causes the attack animation to cancel
|
Bug #6993: Shooting your last round of ammunition causes the attack animation to cancel
|
||||||
Bug #7009: Falling actors teleport to the ground without receiving any damage on cell loading
|
Bug #7009: Falling actors teleport to the ground without receiving any damage on cell loading
|
||||||
Bug #7034: Misc items defined in one content file are not treated as keys if another content file uses them as such
|
Bug #7034: Misc items defined in one content file are not treated as keys if another content file uses them as such
|
||||||
|
Bug #7040: Incorrect rendering order for Rebirth's Stormfang
|
||||||
Bug #7042: Weapon follow animations that immediately follow the hit animations cause multiple hits
|
Bug #7042: Weapon follow animations that immediately follow the hit animations cause multiple hits
|
||||||
Bug #7044: Changing a class' services does not affect autocalculated NPCs
|
Bug #7044: Changing a class' services does not affect autocalculated NPCs
|
||||||
Bug #7053: Running into objects doesn't trigger GetCollidingPC
|
Bug #7053: Running into objects doesn't trigger GetCollidingPC
|
||||||
|
|
|
@ -221,6 +221,7 @@ osg::Group {
|
||||||
AttributeList 1 {
|
AttributeList 1 {
|
||||||
osg::Depth {
|
osg::Depth {
|
||||||
UniqueID 10
|
UniqueID 10
|
||||||
|
Function LEQUAL
|
||||||
}
|
}
|
||||||
Value OFF
|
Value OFF
|
||||||
}
|
}
|
||||||
|
|
|
@ -885,12 +885,11 @@ namespace MWRender
|
||||||
osg::StateSet* queryStateSet = new osg::StateSet;
|
osg::StateSet* queryStateSet = new osg::StateSet;
|
||||||
if (queryVisible)
|
if (queryVisible)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Depth> depth = new SceneUtil::AutoDepth(osg::Depth::LEQUAL);
|
osg::ref_ptr<osg::Depth> depth = new SceneUtil::AutoDepth;
|
||||||
// This is a trick to make fragments written by the query always use the maximum depth value,
|
// This is a trick to make fragments written by the query always use the maximum depth value,
|
||||||
// without having to retrieve the current far clipping distance.
|
// without having to retrieve the current far clipping distance.
|
||||||
// We want the sun glare to be "infinitely" far away.
|
// We want the sun glare to be "infinitely" far away.
|
||||||
double far = SceneUtil::AutoDepth::isReversed() ? 0.0 : 1.0;
|
double far = SceneUtil::AutoDepth::isReversed() ? 0.0 : 1.0;
|
||||||
depth->setFunction(osg::Depth::LEQUAL);
|
|
||||||
depth->setZNear(far);
|
depth->setZNear(far);
|
||||||
depth->setZFar(far);
|
depth->setZFar(far);
|
||||||
depth->setWriteMask(false);
|
depth->setWriteMask(false);
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
#include <osg/AlphaFunc>
|
#include <osg/AlphaFunc>
|
||||||
#include <osg/BlendFunc>
|
#include <osg/BlendFunc>
|
||||||
#include <osg/Depth>
|
|
||||||
#include <osg/FrontFace>
|
#include <osg/FrontFace>
|
||||||
#include <osg/Material>
|
#include <osg/Material>
|
||||||
#include <osg/PolygonMode>
|
#include <osg/PolygonMode>
|
||||||
|
@ -2011,7 +2010,7 @@ namespace NifOsg
|
||||||
stateset->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
|
stateset->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
osg::ref_ptr<osg::Depth> depth = new osg::Depth;
|
osg::ref_ptr<osg::Depth> depth = new SceneUtil::AutoDepth;
|
||||||
depth->setWriteMask(depthWrite);
|
depth->setWriteMask(depthWrite);
|
||||||
if (!depthTest)
|
if (!depthTest)
|
||||||
depth->setFunction(osg::Depth::ALWAYS);
|
depth->setFunction(osg::Depth::ALWAYS);
|
||||||
|
|
|
@ -275,14 +275,14 @@ namespace Resource
|
||||||
{
|
{
|
||||||
if (stateset->getRenderingHint() == osg::StateSet::TRANSPARENT_BIN)
|
if (stateset->getRenderingHint() == osg::StateSet::TRANSPARENT_BIN)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Depth> depth = new osg::Depth;
|
osg::ref_ptr<osg::Depth> depth = new SceneUtil::AutoDepth;
|
||||||
depth->setWriteMask(false);
|
depth->setWriteMask(false);
|
||||||
|
|
||||||
stateset->setAttributeAndModes(depth, osg::StateAttribute::ON);
|
stateset->setAttributeAndModes(depth, osg::StateAttribute::ON);
|
||||||
}
|
}
|
||||||
else if (stateset->getRenderingHint() == osg::StateSet::OPAQUE_BIN)
|
else if (stateset->getRenderingHint() == osg::StateSet::OPAQUE_BIN)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Depth> depth = new osg::Depth;
|
osg::ref_ptr<osg::Depth> depth = new SceneUtil::AutoDepth;
|
||||||
depth->setWriteMask(true);
|
depth->setWriteMask(true);
|
||||||
|
|
||||||
stateset->setAttributeAndModes(depth, osg::StateAttribute::ON);
|
stateset->setAttributeAndModes(depth, osg::StateAttribute::ON);
|
||||||
|
|
|
@ -64,7 +64,9 @@ namespace SceneUtil
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AutoDepth(
|
AutoDepth(
|
||||||
osg::Depth::Function func = osg::Depth::LESS, double zNear = 0.0, double zFar = 1.0, bool writeMask = true)
|
// NB: OSG uses LESS test function by default, Morrowind uses LEQUAL
|
||||||
|
osg::Depth::Function func = osg::Depth::LEQUAL, double zNear = 0.0, double zFar = 1.0,
|
||||||
|
bool writeMask = true)
|
||||||
{
|
{
|
||||||
setFunction(func);
|
setFunction(func);
|
||||||
setZNear(zNear);
|
setZNear(zNear);
|
||||||
|
|
|
@ -18,7 +18,8 @@ namespace SceneUtil
|
||||||
{
|
{
|
||||||
void setupSoftEffect(osg::Node& node, float size, bool falloff, float falloffDepth)
|
void setupSoftEffect(osg::Node& node, float size, bool falloff, float falloffDepth)
|
||||||
{
|
{
|
||||||
static const osg::ref_ptr<SceneUtil::AutoDepth> depth = new SceneUtil::AutoDepth(osg::Depth::LESS, 0, 1, false);
|
static const osg::ref_ptr<SceneUtil::AutoDepth> depth
|
||||||
|
= new SceneUtil::AutoDepth(osg::Depth::LEQUAL, 0, 1, false);
|
||||||
|
|
||||||
osg::StateSet* stateset = node.getOrCreateStateSet();
|
osg::StateSet* stateset = node.getOrCreateStateSet();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue