|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef NSS_TYPEDEFS |
|
#define NSS_TYPEDEFS |
|
|
|
|
|
#define half float16_t |
|
#define half2 f16vec2 |
|
#define half3 f16vec3 |
|
#define half4 f16vec4 |
|
|
|
|
|
#define float float32_t |
|
#define float2 f32vec2 |
|
#define float3 f32vec3 |
|
#define float4 f32vec4 |
|
|
|
|
|
#define int8_t int8_t |
|
#define int8_t2 i8vec2 |
|
#define int8_t3 i8vec3 |
|
#define int8_t4 i8vec4 |
|
|
|
|
|
#define int16_t int16_t |
|
#define int16_t2 i16vec2 |
|
#define int16_t3 i16vec3 |
|
#define int16_t4 i16vec4 |
|
|
|
|
|
#define uint16_t uint16_t |
|
#define uint16_t2 u16vec2 |
|
#define uint16_t3 u16vec3 |
|
#define uint16_t4 u16vec4 |
|
|
|
|
|
#define int32_t int32_t |
|
#define int32_t2 i32vec2 |
|
#define int32_t3 i32vec3 |
|
#define int32_t4 i32vec4 |
|
|
|
|
|
#define uint32_t uint32_t |
|
#define uint32_t2 u32vec2 |
|
#define uint32_t3 u32vec3 |
|
#define uint32_t4 u32vec4 |
|
|
|
|
|
#define lerp mix |
|
|
|
|
|
half rcp(half x) { return half( 1.HF) / x; } |
|
half2 rcp(half2 x) { return half2(1.HF) / x; } |
|
half3 rcp(half3 x) { return half3(1.HF) / x; } |
|
half4 rcp(half4 x) { return half4(1.HF) / x; } |
|
|
|
|
|
float rcp(float x) { return float( 1.0f) / x; } |
|
float2 rcp(float2 x) { return float2(1.0f) / x; } |
|
float3 rcp(float3 x) { return float3(1.0f) / x; } |
|
float4 rcp(float4 x) { return float4(1.0f) / x; } |
|
|
|
|
|
half saturate(half x) { return clamp(x, half( 0.HF), half( 1.HF)); } |
|
half2 saturate(half2 x) { return clamp(x, half2(0.HF), half2(1.HF)); } |
|
half3 saturate(half3 x) { return clamp(x, half3(0.HF), half3(1.HF)); } |
|
half4 saturate(half4 x) { return clamp(x, half4(0.HF), half4(1.HF)); } |
|
|
|
|
|
float saturate(float x) { return clamp(x, 0.f, 1.f); } |
|
float2 saturate(float2 x) { return clamp(x, float2(0.f), float2(1.f)); } |
|
float3 saturate(float3 x) { return clamp(x, float3(0.f), float3(1.f)); } |
|
float4 saturate(float4 x) { return clamp(x, float4(0.f), float4(1.f)); } |
|
|
|
#endif |
|
|