diff options
author | 2016-08-06 14:20:16 +0200 | |
---|---|---|
committer | 2016-08-06 14:20:16 +0200 | |
commit | 3917850b6197950e5671f4d3b9cb0b9c921b798d (patch) | |
tree | 503b9690868a7c238ba10d73b5c6bece7ca8c338 /3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp | |
parent | 057474989c1a92e9e935dbc8cb9d233ba3a4ea3a (diff) |
Update BX and BGFX (nw)
Diffstat (limited to '3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp index 8b08dec93cb..3ebe122d776 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp +++ b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp @@ -23,7 +23,7 @@ using namespace std::tr1; #include <bx/timer.h> #include <bx/allocator.h> #include <bx/hash.h> -#include <bx/float4_t.h> +#include <bx/simd_t.h> #include <bx/fpumath.h> #include <bx/crtimpl.h> #include "entry/entry.h" @@ -1513,9 +1513,9 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume using namespace bx; - const float4_t lx = float4_splat(_light[0]); - const float4_t ly = float4_splat(_light[1]); - const float4_t lz = float4_splat(_light[2]); + const simd128_t lx = simd_splat(_light[0]); + const simd128_t ly = simd_splat(_light[1]); + const simd128_t lz = simd_splat(_light[2]); for (; ii < numEdgesRounded; ii+=2) { @@ -1524,47 +1524,47 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume const Plane* edgePlane0 = &edgePlanes[ii*2]; const Plane* edgePlane1 = &edgePlanes[ii*2 + 2]; - const float4_t reverse = - float4_ild(edge0.m_faceReverseOrder[0] + const simd128_t reverse = + simd_ild(edge0.m_faceReverseOrder[0] , edge1.m_faceReverseOrder[0] , edge0.m_faceReverseOrder[1] , edge1.m_faceReverseOrder[1] ); - const float4_t p00 = float4_ld(edgePlane0[0].m_plane); - const float4_t p10 = float4_ld(edgePlane1[0].m_plane); - const float4_t p01 = float4_ld(edgePlane0[1].m_plane); - const float4_t p11 = float4_ld(edgePlane1[1].m_plane); - - const float4_t xxyy0 = float4_shuf_xAyB(p00, p01); - const float4_t zzww0 = float4_shuf_zCwD(p00, p01); - const float4_t xxyy1 = float4_shuf_xAyB(p10, p11); - const float4_t zzww1 = float4_shuf_zCwD(p10, p11); - - const float4_t vX = float4_shuf_xAyB(xxyy0, xxyy1); - const float4_t vY = float4_shuf_zCwD(xxyy0, xxyy1); - const float4_t vZ = float4_shuf_xAyB(zzww0, zzww1); - const float4_t vW = float4_shuf_zCwD(zzww0, zzww1); - - const float4_t r0 = float4_mul(vX, lx); - const float4_t r1 = float4_mul(vY, ly); - const float4_t r2 = float4_mul(vZ, lz); - - const float4_t dot = float4_add(r0, float4_add(r1, r2) ); - const float4_t f = float4_add(dot, vW); - - const float4_t zero = float4_zero(); - const float4_t mask = float4_cmpgt(f, zero); - const float4_t onef = float4_splat(1.0f); - const float4_t tmp0 = float4_and(mask, onef); - const float4_t tmp1 = float4_ftoi(tmp0); - const float4_t tmp2 = float4_xor(tmp1, reverse); - const float4_t tmp3 = float4_sll(tmp2, 1); - const float4_t onei = float4_isplat(1); - const float4_t tmp4 = float4_isub(tmp3, onei); + const simd128_t p00 = simd_ld(edgePlane0[0].m_plane); + const simd128_t p10 = simd_ld(edgePlane1[0].m_plane); + const simd128_t p01 = simd_ld(edgePlane0[1].m_plane); + const simd128_t p11 = simd_ld(edgePlane1[1].m_plane); + + const simd128_t xxyy0 = simd_shuf_xAyB(p00, p01); + const simd128_t zzww0 = simd_shuf_zCwD(p00, p01); + const simd128_t xxyy1 = simd_shuf_xAyB(p10, p11); + const simd128_t zzww1 = simd_shuf_zCwD(p10, p11); + + const simd128_t vX = simd_shuf_xAyB(xxyy0, xxyy1); + const simd128_t vY = simd_shuf_zCwD(xxyy0, xxyy1); + const simd128_t vZ = simd_shuf_xAyB(zzww0, zzww1); + const simd128_t vW = simd_shuf_zCwD(zzww0, zzww1); + + const simd128_t r0 = simd_mul(vX, lx); + const simd128_t r1 = simd_mul(vY, ly); + const simd128_t r2 = simd_mul(vZ, lz); + + const simd128_t dot = simd_add(r0, simd_add(r1, r2) ); + const simd128_t f = simd_add(dot, vW); + + const simd128_t zero = simd_zero(); + const simd128_t mask = simd_cmpgt(f, zero); + const simd128_t onef = simd_splat(1.0f); + const simd128_t tmp0 = simd_and(mask, onef); + const simd128_t tmp1 = simd_ftoi(tmp0); + const simd128_t tmp2 = simd_xor(tmp1, reverse); + const simd128_t tmp3 = simd_sll(tmp2, 1); + const simd128_t onei = simd_isplat(1); + const simd128_t tmp4 = simd_isub(tmp3, onei); BX_ALIGN_DECL_16(int32_t res[4]); - float4_st(&res, tmp4); + simd_st(&res, tmp4); for (uint16_t jj = 0; jj < 2; ++jj) { |