Nebula
Loading...
Searching...
No Matches
vec3.h File Reference
#include "core/types.h"
#include "math/scalar.h"
#include <xmmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>
#include <immintrin.h>

Go to the source code of this file.

Classes

struct  Math::vec3
 A 3D vector. More...
 

Namespaces

namespace  Math
 Different curves.
 

Functions

__forceinline vec3 Math::operator- (const vec3 &lhs)
 
__forceinline vec3 Math::operator* (const vec3 &lhs, scalar t)
 
__forceinline vec3 Math::operator* (const vec3 &lhs, const vec3 &rhs)
 
__forceinline vec3 Math::operator+ (const vec3 &lhs, const vec3 &rhs)
 
__forceinline vec3 Math::operator- (const vec3 &lhs, const vec3 &rhs)
 
__forceinline scalar Math::length (const vec3 &v)
 
__forceinline scalar Math::lengthsq (const vec3 &v)
 
__forceinline vec3 Math::reciprocal (const vec3 &v)
 
__forceinline vec3 Math::reciprocalapprox (const vec3 &v)
 
__forceinline vec3 Math::multiply (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::multiplyadd (const vec3 &v0, const vec3 &v1, const vec3 &v2)
 
__forceinline vec3 Math::divide (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::abs (const vec3 &v)
 
__forceinline vec3 Math::cross (const vec3 &v0, const vec3 &v1)
 
__forceinline scalar Math::dot (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::barycentric (const vec3 &v0, const vec3 &v1, const vec3 &v2, scalar f, scalar g)
 calculates Result = v0 + f * (v1 - v0) + g * (v2 - v0)
 
__forceinline vec3 Math::catmullrom (const vec3 &v0, const vec3 &v1, const vec3 &v2, const vec3 &v3, scalar s)
 
__forceinline vec3 Math::hermite (const vec3 &v1, const vec3 &t1, const vec3 &v2, const vec3 &t2, scalar s)
 
__forceinline scalar Math::angle (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::lerp (const vec3 &v0, const vec3 &v1, scalar s)
 
__forceinline vec3 Math::maximize (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::minimize (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::clamp (const vec3 &clamp, const vec3 &min, const vec3 &max)
 
__forceinline vec3 Math::normalize (const vec3 &v)
 
__forceinline vec3 Math::normalizeapprox (const vec3 &v)
 
__forceinline vec3 Math::reflect (const vec3 &normal, const vec3 &incident)
 
__forceinline bool Math::less_any (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::less_all (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::lessequal_any (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::lessequal_all (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::greater_any (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::greater_all (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::greaterequal_any (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::greaterequal_all (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::equal_any (const vec3 &v0, const vec3 &v1)
 
__forceinline bool Math::nearequal (const vec3 &v0, const vec3 &v1, float epsilon)
 
__forceinline bool Math::nearequal (const vec3 &v0, const vec3 &v1, const vec3 &epsilon)
 
__forceinline vec3 Math::less (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::greater (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::equal (const vec3 &v0, const vec3 &v1)
 
__forceinline vec3 Math::splat (const vec3 &v, uint element)
 
__forceinline vec3 Math::splat_x (const vec3 &v)
 
__forceinline vec3 Math::splat_y (const vec3 &v)
 
__forceinline vec3 Math::splat_z (const vec3 &v)
 
__forceinline vec3 Math::permute (const vec3 &v0, const vec3 &v1, unsigned int i0, unsigned int i1, unsigned int i2)
 
__forceinline vec3 Math::select (const vec3 &v0, const vec3 &v1, const uint i0, const uint i1, const uint i2)
 
__forceinline vec3 Math::select (const vec3 &v0, const vec3 &v1, const vec3 &control)
 
__forceinline vec3 Math::floor (const vec3 &v)
 
__forceinline vec3 Math::ceiling (const vec3 &v)
 

Variables

static const __m128 Math::_id_x = _mm_setr_ps(1.0f, 0.0f, 0.0f, 0.0f)
 
static const __m128 Math::_id_y = _mm_setr_ps(0.0f, 1.0f, 0.0f, 0.0f)
 
static const __m128 Math::_id_z = _mm_setr_ps(0.0f, 0.0f, 1.0f, 0.0f)
 
static const __m128 Math::_id_w = _mm_setr_ps(0.0f, 0.0f, 0.0f, 1.0f)
 
static const __m128 Math::_minus1 = _mm_setr_ps(-1.0f, -1.0f, -1.0f, -1.0f)
 
static const __m128 Math::_plus1 = _mm_setr_ps(1.0f, 1.0f, 1.0f, 1.0f)
 
static const __m128 Math::_zero = _mm_setr_ps(0.0f, 0.0f, 0.0f, 0.0f)
 
static const __m128i Math::_sign = _mm_setr_epi32(0x80000000, 0x80000000, 0x80000000, 0x80000000)
 
static const __m128 Math::_mask_xyz = _mm_castsi128_ps(_mm_setr_epi32( 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0 ))