mirror of
https://github.com/cocos/cocos-engine.git
synced 2026-09-28 03:32:38 +08:00
59 lines
2.3 KiB
Plaintext
59 lines
2.3 KiB
Plaintext
// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
|
|
|
|
// common module
|
|
|
|
// constant value
|
|
#define QUATER_PI 0.78539816340
|
|
#define HALF_PI 1.57079632679
|
|
#define PI 3.14159265359
|
|
#define PI2 6.28318530718
|
|
#define PI4 12.5663706144
|
|
|
|
#define INV_QUATER_PI 1.27323954474
|
|
#define INV_HALF_PI 0.63661977237
|
|
#define INV_PI 0.31830988618
|
|
#define INV_PI2 0.15915494309
|
|
#define INV_PI4 0.07957747155
|
|
|
|
#define EPSILON 1e-6
|
|
#define EPSILON_LOWP 1e-4
|
|
#define LOG2 1.442695
|
|
#define EXP_VALUE 2.71828183f
|
|
#define FP_MAX 65504.0
|
|
#define FP_SCALE 0.0009765625
|
|
#define FP_SCALE_INV 1024.0
|
|
#define GRAY_VECTOR vec3(0.299, 0.587, 0.114)
|
|
|
|
// common function
|
|
#pragma define saturate(a) clamp(a, 0.0, 1.0)
|
|
|
|
// runtime constants
|
|
#pragma define-meta CC_DEVICE_SUPPORT_FLOAT_TEXTURE default(1)
|
|
#pragma define-meta CC_DEVICE_MAX_FRAGMENT_UNIFORM_VECTORS default(1024)
|
|
#pragma define-meta CC_DEVICE_MAX_VERTEX_UNIFORM_VECTORS default(1024)
|
|
#pragma define-meta CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS default(128)
|
|
#pragma define-meta CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS default(128)
|
|
#pragma define-meta CC_DEVICE_CAN_BENEFIT_FROM_INPUT_ATTACHMENT default(0)
|
|
#pragma define-meta CC_PLATFORM_ANDROID_AND_WEBGL default(0)
|
|
#pragma define-meta CC_ENABLE_WEBGL_HIGHP_STRUCT_VALUES default(0)
|
|
#pragma define-meta CC_ENABLE_CLUSTERED_LIGHT_CULLING default(0)
|
|
|
|
// When sampling RTs, Y-flip is needed if the screen space sign Y is positive (pointing upwards)
|
|
#pragma define CC_HANDLE_RT_SAMPLE_FLIP(uv) uv = cc_cameraPos.w > 1.0 ? vec2(uv.x, 1.0 - uv.y) : uv
|
|
#pragma define CC_HANDLE_GET_CLIP_FLIP(uv) uv = cc_cameraPos.w == 0.0 ? vec2(uv.x, -uv.y) : uv
|
|
|
|
#pragma define STEP_FINT_128(v) (step(128.0, (v) + 0.5))
|
|
#pragma define MOD_FINT_128(v) (mod(float(int((v) + 0.5)), 128.0))
|
|
|
|
highp float decode32 (highp vec4 rgba) {
|
|
rgba = rgba * 255.0;
|
|
highp float Sign = 1.0 - STEP_FINT_128(rgba[3]) * 2.0;
|
|
highp float Exponent = 2.0 * MOD_FINT_128(rgba[3]) + STEP_FINT_128(rgba[2]) - 127.0;
|
|
highp float Mantissa = MOD_FINT_128(rgba[2]) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;
|
|
return Sign * exp2(Exponent - 23.0) * Mantissa;
|
|
}
|
|
|
|
float isNan(float val) {
|
|
return (val <= 0.0 || 0.0 <= val) ? 0.0 : 1.0;
|
|
}
|