mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-01 17:38:41 +00:00
Correct normal bias for entities
Remove use of magic constants. Apply cameraOffset Calculate distance projected on SM plane
This commit is contained in:
parent
25c1974e0d
commit
4801bdf45a
4 changed files with 14 additions and 15 deletions
|
@ -58,15 +58,13 @@ void DirectionalLight::createSplitMatrices(const Camera *cam)
|
|||
const v3f &viewUp = cam->getCameraNode()->getUpVector();
|
||||
v3f viewRight = look.crossProduct(viewUp);
|
||||
|
||||
v3f farCorner = look + viewRight * tanFovX + viewUp * tanFovY;
|
||||
v3f farCorner = (look + viewRight * tanFovX + viewUp * tanFovY).normalize();
|
||||
// Compute the frustumBoundingSphere radius
|
||||
v3f boundVec = (camPos + farCorner * sfFar) - newCenter;
|
||||
radius = boundVec.getLength() * 2.0f;
|
||||
radius = boundVec.getLength();
|
||||
// boundVec.getLength();
|
||||
float vvolume = radius * 2.0f;
|
||||
|
||||
float vvolume = radius;
|
||||
v3f frustumCenter = newCenter;
|
||||
// probar radius multipliacdor en funcion del I, a menor I mas multiplicador
|
||||
v3f eye_displacement = direction * vvolume;
|
||||
|
||||
// we must compute the viewmat with the position - the camera offset
|
||||
|
|
|
@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "irrlichttypes_bloated.h"
|
||||
#include <matrix4.h>
|
||||
#include "util/basic_macros.h"
|
||||
#include "constants.h"
|
||||
|
||||
class Camera;
|
||||
class Client;
|
||||
|
@ -67,7 +68,7 @@ public:
|
|||
/// Gets the light's far value.
|
||||
f32 getMaxFarValue() const
|
||||
{
|
||||
return farPlane;
|
||||
return farPlane * BS;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -118,12 +118,8 @@ size_t ShadowRenderer::getDirectionalLightCount() const
|
|||
f32 ShadowRenderer::getMaxShadowFar() const
|
||||
{
|
||||
if (!m_light_list.empty()) {
|
||||
float wanted_range = m_client->getEnv().getClientMap().getWantedRange();
|
||||
|
||||
float zMax = m_light_list[0].getMaxFarValue() > wanted_range
|
||||
? wanted_range
|
||||
: m_light_list[0].getMaxFarValue();
|
||||
return zMax * MAP_BLOCKSIZE;
|
||||
float zMax = m_light_list[0].getMaxFarValue();
|
||||
return zMax;
|
||||
}
|
||||
return 0.0f;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue