This commit is contained in:
Branimir Karadžić
2016-02-21 22:33:42 -08:00
parent 597b10128e
commit 6fd77942ac
3 changed files with 8 additions and 13 deletions

View File

@@ -277,7 +277,7 @@ void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _num
_sphere.m_radius = bx::fsqrt(maxDistSq);
}
void calcPlaneUv(const Plane& _plane, float _step, float* _udir, float* _vdir)
void calcPlaneUv(const Plane& _plane, float* _udir, float* _vdir)
{
const uint8_t axis =
bx::fabsolute(_plane.m_normal[0]) > 0.6f ? 0
@@ -287,29 +287,22 @@ void calcPlaneUv(const Plane& _plane, float _step, float* _udir, float* _vdir)
const uint8_t* index = (uint8_t*)&"\x1\x2\x0\x2\x0\x1"[axis*2];
const uint8_t idx0 = *(index );
const uint8_t idx1 = *(index+1);
const float invStep = 1.0f/_step;
_udir[0] = 0.0f;
_udir[1] = 0.0f;
_udir[2] = 0.0f;
_udir[idx0] = invStep;
_udir[idx0] = 1.0f;
_vdir[0] = 0.0f;
_vdir[1] = 0.0f;
_vdir[2] = 0.0f;
_vdir[idx1] = invStep;
_vdir[idx1] = 1.0f;
const float invPlaneAxis = 1.0f / _plane.m_normal[axis];
float normal[3];
float invLen;
invLen = 1.0f / bx::vec3Norm(normal, _udir);
bx::vec3Mul(_udir, normal, invLen);
_udir[axis] -= bx::vec3Dot(_udir, _plane.m_normal) * invPlaneAxis;
bx::vec3Norm(_udir, _udir);
invLen = 1.0f / bx::vec3Norm(normal, _vdir);
bx::vec3Mul(_vdir, normal, invLen);
_vdir[axis] -= bx::vec3Dot(_vdir, _plane.m_normal) * invPlaneAxis;
bx::vec3Norm(_vdir, _vdir);
}

View File

@@ -95,7 +95,7 @@ void calcMaxBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _num
void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride, float _step = 0.01f);
/// Calculate coplanar U/V vectors.
void calcPlaneUv(const Plane& _plane, float _step, float* _udir, float* _vdir);
void calcPlaneUv(const Plane& _plane, float* _udir, float* _vdir);
/// Returns 6 (near, far, left, right, top, bottom) planes representing frustum planes.
void buildFrustumPlanes(Plane* _planes, const float* _viewProj);

View File

@@ -6,9 +6,10 @@
#include <string.h>
#include <bx/debug.h>
#include <bx/hash.h>
#include <bx/uint32_t.h>
#include <bx/string.h>
#include <bx/readerwriter.h>
#include <bx/radixsort.h>
#include <bx/string.h>
#include <bx/uint32_t.h>
#include "config.h"
#include "vertexdecl.h"
@@ -839,4 +840,5 @@ namespace bgfx
return (uint16_t)numVertices;
}
} // namespace bgfx