Browse Source

Removing old vector math.

Branimir Karadžić 7 years ago
parent
commit
b1752bc630

+ 1 - 1
examples/32-particles/particles.cpp

@@ -416,7 +416,7 @@ public:
 			m_emitter[currentEmitter].update();
 
 			psUpdate(deltaTime * timeScale);
-			psRender(0, view, eye);
+			psRender(0, view, bx::load(eye) );
 
 			if (showBounds)
 			{

+ 40 - 51
examples/common/ps/particle_system.cpp

@@ -98,8 +98,8 @@ namespace ps
 {
 	struct Particle
 	{
-		float start[3];
-		float end[2][3];
+		bx::Vec3 start;
+		bx::Vec3 end[2];
 		float blendStart;
 		float blendEnd;
 		float scaleStart;
@@ -237,6 +237,8 @@ namespace ps
 			const uint32_t numParticles = uint32_t(m_dt / timePerParticle);
 			m_dt -= numParticles * timePerParticle;
 
+			constexpr bx::Vec3 up = { 0.0f, 1.0f, 0.0f };
+
 			float time = 0.0f;
 			for (uint32_t ii = 0
 				; ii < numParticles && m_num < m_max
@@ -246,70 +248,67 @@ namespace ps
 				Particle& particle = m_particles[m_num];
 				m_num++;
 
-				const float up[3] = { 0.0f, 1.0f, 0.0f };
-
-				float pos[3];
+				bx::Vec3 pos;
 				switch (m_shape)
 				{
 					default:
 					case EmitterShape::Sphere:
-						bx::randUnitSphere(pos, &m_rng);
+						pos = bx::randUnitSphere(&m_rng);
 						break;
 
 					case EmitterShape::Hemisphere:
-						bx::randUnitHemisphere(pos, &m_rng, up);
+						pos = bx::randUnitHemisphere(&m_rng, up);
 						break;
 
 					case EmitterShape::Circle:
-						bx::randUnitCircle(pos, &m_rng);
+						pos = bx::randUnitCircle(&m_rng);
 						break;
 
 					case EmitterShape::Disc:
 						{
-							float tmp[3];
-							bx::randUnitCircle(tmp, &m_rng);
-							bx::vec3Mul(pos, tmp, bx::frnd(&m_rng) );
+							const bx::Vec3 tmp = bx::randUnitCircle(&m_rng);
+							pos = bx::mul(tmp, bx::frnd(&m_rng) );
 						}
 						break;
 
 					case EmitterShape::Rect:
-						pos[0] = bx::frndh(&m_rng);
-						pos[1] = 0.0f;
-						pos[2] = bx::frndh(&m_rng);
+						pos =
+						{
+							bx::frndh(&m_rng),
+							0.0f,
+							bx::frndh(&m_rng),
+						};
 						break;
 				}
 
-				float dir[3];
+				bx::Vec3 dir;
 				switch (m_direction)
 				{
 					default:
 					case EmitterDirection::Up:
-						bx::vec3Move(dir, up);
+						dir = up;
 						break;
 
 					case EmitterDirection::Outward:
-						bx::vec3Norm(dir, pos);
+						dir = bx::normalize(pos);
 						break;
 				}
 
-				float start[3];
-				float end[3];
 				const float startOffset = bx::lerp(m_uniforms.m_offsetStart[0], m_uniforms.m_offsetStart[1], bx::frnd(&m_rng) );
-				bx::vec3Mul(start, pos, startOffset);
+				const bx::Vec3 start = bx::mul(pos, startOffset);
 
 				const float endOffset = bx::lerp(m_uniforms.m_offsetEnd[0], m_uniforms.m_offsetEnd[1], bx::frnd(&m_rng) );
-				float tmp1[3];
-				bx::vec3Mul(tmp1, dir, endOffset);
-				bx::vec3Add(end, tmp1, start);
+				const bx::Vec3 tmp1 = bx::mul(dir, endOffset);
+				const bx::Vec3 end  = bx::add(tmp1, start);
 
 				particle.life = time;
 				particle.lifeSpan = bx::lerp(m_uniforms.m_lifeSpan[0], m_uniforms.m_lifeSpan[1], bx::frnd(&m_rng) );
 
-				float gravity[3] = { 0.0f, -9.81f * m_uniforms.m_gravityScale * bx::square(particle.lifeSpan), 0.0f };
+				const bx::Vec3 gravity = { 0.0f, -9.81f * m_uniforms.m_gravityScale * bx::square(particle.lifeSpan), 0.0f };
 
-				bx::vec3MulMtx(particle.start,  start, mtx);
-				bx::vec3MulMtx(particle.end[0], end,   mtx);
-				bx::vec3Add(particle.end[1], particle.end[0], gravity);
+				particle.start  = bx::mul(start, mtx);
+				particle.end[0] = bx::mul(end,   mtx);
+				particle.end[1] = bx::add(particle.end[0], gravity);
 
 				bx::memCopy(particle.rgba, m_uniforms.m_rgba, BX_COUNTOF(m_uniforms.m_rgba)*sizeof(uint32_t) );
 
@@ -323,7 +322,7 @@ namespace ps
 			}
 		}
 
-		uint32_t render(const float _uv[4], const float* _mtxView, const float* _eye, uint32_t _first, uint32_t _max, ParticleSort* _outSort, PosColorTexCoord0Vertex* _outVertices)
+		uint32_t render(const float _uv[4], const float* _mtxView, const bx::Vec3& _eye, uint32_t _first, uint32_t _max, ParticleSort* _outSort, PosColorTexCoord0Vertex* _outVertices)
 		{
 			bx::EaseFn easeRgba  = bx::getEaseFunc(m_uniforms.m_easeRgba);
 			bx::EaseFn easePos   = bx::getEaseFunc(m_uniforms.m_easePos);
@@ -348,19 +347,13 @@ namespace ps
 				const float ttBlend = bx::clamp(easeBlend(particle.life), 0.0f, 1.0f);
 				const float ttRgba  = bx::clamp(easeRgba(particle.life),  0.0f, 1.0f);
 
-				float p0[3];
-				bx::vec3Lerp(p0, particle.start, particle.end[0], ttPos);
-
-				float p1[3];
-				bx::vec3Lerp(p1, particle.end[0], particle.end[1], ttPos);
-
-				float pos[3];
-				bx::vec3Lerp(pos, p0, p1, ttPos);
+				const bx::Vec3 p0  = bx::lerp(particle.start,  particle.end[0], ttPos);
+				const bx::Vec3 p1  = bx::lerp(particle.end[0], particle.end[1], ttPos);
+				const bx::Vec3 pos = bx::lerp(p0, p1, ttPos);
 
 				ParticleSort& sort = _outSort[current];
-				float tmp[3];
-				bx::vec3Sub(tmp, _eye, pos);
-				sort.dist = bx::sqrt(bx::vec3Dot(tmp, tmp) );
+				const bx::Vec3 tmp0 = bx::sub(_eye, pos);
+				sort.dist = bx::length(tmp0);
 				sort.idx  = current;
 
 				uint32_t idx = uint32_t(ttRgba*4);
@@ -378,12 +371,11 @@ namespace ps
 
 				uint32_t abgr = toAbgr(rr, gg, bb, aa);
 
-				float udir[3] = { _mtxView[0]*scale, _mtxView[4]*scale, _mtxView[8]*scale };
-				float vdir[3] = { _mtxView[1]*scale, _mtxView[5]*scale, _mtxView[9]*scale };
+				const bx::Vec3 udir = { _mtxView[0]*scale, _mtxView[4]*scale, _mtxView[8]*scale };
+				const bx::Vec3 vdir = { _mtxView[1]*scale, _mtxView[5]*scale, _mtxView[9]*scale };
 
 				PosColorTexCoord0Vertex* vertex = &_outVertices[current*4];
-				bx::vec3Sub(tmp, pos, udir);
-				bx::vec3Sub(&vertex->m_x, tmp, vdir);
+				bx::store(&vertex->m_x, bx::sub(bx::sub(pos, udir), vdir) );
 				aabbExpand(aabb, &vertex->m_x);
 				vertex->m_abgr  = abgr;
 				vertex->m_u     = _uv[0];
@@ -391,8 +383,7 @@ namespace ps
 				vertex->m_blend = blend;
 				++vertex;
 
-				bx::vec3Add(tmp, pos, udir);
-				bx::vec3Sub(&vertex->m_x, tmp, vdir);
+				bx::store(&vertex->m_x, bx::sub(bx::add(pos, udir), vdir) );
 				aabbExpand(aabb, &vertex->m_x);
 				vertex->m_abgr  = abgr;
 				vertex->m_u     = _uv[2];
@@ -400,8 +391,7 @@ namespace ps
 				vertex->m_blend = blend;
 				++vertex;
 
-				bx::vec3Add(tmp, pos, udir);
-				bx::vec3Add(&vertex->m_x, tmp, vdir);
+				bx::store(&vertex->m_x, bx::add(bx::add(pos, udir), vdir) );
 				aabbExpand(aabb, &vertex->m_x);
 				vertex->m_abgr  = abgr;
 				vertex->m_u     = _uv[2];
@@ -409,8 +399,7 @@ namespace ps
 				vertex->m_blend = blend;
 				++vertex;
 
-				bx::vec3Sub(tmp, pos, udir);
-				bx::vec3Add(&vertex->m_x, tmp, vdir);
+				bx::store(&vertex->m_x, bx::add(bx::sub(pos, udir), vdir) );
 				aabbExpand(aabb, &vertex->m_x);
 				vertex->m_abgr  = abgr;
 				vertex->m_u     = _uv[0];
@@ -534,7 +523,7 @@ namespace ps
 			m_num = numParticles;
 		}
 
-		void render(uint8_t _view, const float* _mtxView, const float* _eye)
+		void render(uint8_t _view, const float* _mtxView, const bx::Vec3& _eye)
 		{
 			if (0 != m_num)
 			{
@@ -751,7 +740,7 @@ void psUpdate(float _dt)
 	s_ctx.update(_dt);
 }
 
-void psRender(uint8_t _view, const float* _mtxView, const float* _eye)
+void psRender(uint8_t _view, const float* _mtxView, const bx::Vec3& _eye)
 {
 	s_ctx.render(_view, _mtxView, _eye);
 }

+ 1 - 1
examples/common/ps/particle_system.h

@@ -101,6 +101,6 @@ void psDestroyEmitter(EmitterHandle _handle);
 void psUpdate(float _dt);
 
 ///
-void psRender(uint8_t _view, const float* _mtxView, const float* _eye);
+void psRender(uint8_t _view, const float* _mtxView, const bx::Vec3& _eye);
 
 #endif // PARTICLE_SYSTEM_H_HEADER_GUARD