mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
43 lines
1 KiB
GLSL
43 lines
1 KiB
GLSL
// Use of FP16 in Godot is done explicitly through the types half and hvec.
|
|
// The extensions must be supported by the system to use this shader.
|
|
//
|
|
// If EXPLICIT_FP16 is not defined, all operations will use full precision
|
|
// floats instead and all casting operations will not be performed.
|
|
|
|
#ifndef HALF_INC_H
|
|
#define HALF_INC_H
|
|
|
|
#ifdef EXPLICIT_FP16
|
|
|
|
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
|
|
#extension GL_EXT_shader_16bit_storage : require
|
|
|
|
#define HALF_FLT_MIN float16_t(6.10352e-5)
|
|
#define HALF_FLT_MAX float16_t(65504.0)
|
|
|
|
#define half float16_t
|
|
#define hvec2 f16vec2
|
|
#define hvec3 f16vec3
|
|
#define hvec4 f16vec4
|
|
#define hmat2 f16mat2
|
|
#define hmat3 f16mat3
|
|
#define hmat4 f16mat4
|
|
#define saturateHalf(x) min(float16_t(x), HALF_FLT_MAX)
|
|
|
|
#else
|
|
|
|
#define HALF_FLT_MIN float(1.175494351e-38F)
|
|
#define HALF_FLT_MAX float(3.402823466e+38F)
|
|
|
|
#define half float
|
|
#define hvec2 vec2
|
|
#define hvec3 vec3
|
|
#define hvec4 vec4
|
|
#define hmat2 mat2
|
|
#define hmat3 mat3
|
|
#define hmat4 mat4
|
|
#define saturateHalf(x) (x)
|
|
|
|
#endif
|
|
|
|
#endif // HALF_INC_H
|