mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 09:09:53 +02:00
Fix LOD math
This commit is contained in:
parent
9c16fcfdef
commit
1571c2be27
2 changed files with 6 additions and 8 deletions
|
@ -92,8 +92,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Previous values for output
|
// Previous value for output
|
||||||
float oldVisibilityDistance = getVisibilityDistance();
|
|
||||||
float oldLODAngle = getLODAngleDeg();
|
float oldLODAngle = getLODAngleDeg();
|
||||||
|
|
||||||
// Target fps is slightly overshooted by 5hz
|
// Target fps is slightly overshooted by 5hz
|
||||||
|
@ -174,7 +173,6 @@ void LODManager::autoAdjustLOD(float realTimeDelta) {
|
||||||
|
|
||||||
float LODManager::getLODHalfAngleTan() const {
|
float LODManager::getLODHalfAngleTan() const {
|
||||||
return tan(_lodHalfAngle);
|
return tan(_lodHalfAngle);
|
||||||
|
|
||||||
}
|
}
|
||||||
float LODManager::getLODAngle() const {
|
float LODManager::getLODAngle() const {
|
||||||
return 2.0f * _lodHalfAngle;
|
return 2.0f * _lodHalfAngle;
|
||||||
|
@ -196,10 +194,9 @@ void LODManager::setVisibilityDistance(float distance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LODManager::setLODAngleDeg(float lodAngle) {
|
void LODManager::setLODAngleDeg(float lodAngle) {
|
||||||
auto newSolidAngle = std::max(0.001f, std::min(lodAngle, 90.f));
|
auto newLODAngleDeg = std::max(0.001f, std::min(lodAngle, 90.f));
|
||||||
auto halfTan = glm::tan(glm::radians(newSolidAngle * 0.5f));
|
auto newLODHalfAngle = glm::radians(newLODAngleDeg * 0.5);
|
||||||
auto visibilityDistance = UNIT_ELEMENT_MAX_EXTENT / halfTan;
|
_lodHalfAngle = newLODHalfAngle;
|
||||||
setVisibilityDistance(visibilityDistance);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LODManager::setSmoothScale(float t) {
|
void LODManager::setSmoothScale(float t) {
|
||||||
|
|
|
@ -37,7 +37,8 @@ float getVisibilityDistanceFromHalfAngle(float halfAngle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
float getHalfAngleFromVisibilityDistance(float visibilityDistance) {
|
float getHalfAngleFromVisibilityDistance(float visibilityDistance) {
|
||||||
return UNIT_ELEMENT_MAX_EXTENT / visibilityDistance;
|
float halfAngleTan = UNIT_ELEMENT_MAX_EXTENT / visibilityDistance;
|
||||||
|
return atan(halfAngleTan);
|
||||||
}
|
}
|
||||||
|
|
||||||
float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) {
|
float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) {
|
||||||
|
|
Loading…
Reference in a new issue