common-define.chunk 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
  2. // common module
  3. // constant value
  4. #define QUATER_PI 0.78539816340
  5. #define HALF_PI 1.57079632679
  6. #define PI 3.14159265359
  7. #define PI2 6.28318530718
  8. #define PI4 12.5663706144
  9. #define INV_QUATER_PI 1.27323954474
  10. #define INV_HALF_PI 0.63661977237
  11. #define INV_PI 0.31830988618
  12. #define INV_PI2 0.15915494309
  13. #define INV_PI4 0.07957747155
  14. #define EPSILON 1e-6
  15. #define EPSILON_LOWP 1e-4
  16. #define LOG2 1.442695
  17. #define EXP_VALUE 2.71828183
  18. #define FP_MAX 65504.0
  19. #define FP_SCALE 0.0009765625
  20. #define FP_SCALE_INV 1024.0
  21. #define GRAY_VECTOR vec3(0.299, 0.587, 0.114)
  22. // common functions
  23. #pragma define equalf(data1, data2) (abs(float(data1) - float(data2)) < EPSILON)
  24. #pragma define equalf_lowp(data1, data2) (abs(float(data1) - float(data2)) < EPSILON_LOWP)
  25. #pragma define equalf_epsilon(data1, data2, epsilonValue) (abs(float(data1) - float(data2)) < epsilonValue)
  26. #pragma define clip(value) if(value < 0.0) discard;
  27. #pragma define lerp(value1, value2, value2Multiplier) mix(value1, value2, value2Multiplier)
  28. float saturate(float value) { return clamp(value, 0.0, 1.0); }
  29. vec2 saturate(vec2 value) { return clamp(value, vec2(0.0), vec2(1.0)); }
  30. vec3 saturate(vec3 value) { return clamp(value, vec3(0.0), vec3(1.0)); }
  31. vec4 saturate(vec4 value) { return clamp(value, vec4(0.0), vec4(1.0)); }
  32. // runtime constants
  33. #pragma define-meta CC_DEVICE_SUPPORT_FLOAT_TEXTURE default(1)
  34. #pragma define-meta CC_DEVICE_MAX_FRAGMENT_UNIFORM_VECTORS default(1024)
  35. #pragma define-meta CC_DEVICE_MAX_VERTEX_UNIFORM_VECTORS default(1024)
  36. #pragma define-meta CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS default(128)
  37. #pragma define-meta CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS default(128)
  38. #pragma define-meta CC_DEVICE_CAN_BENEFIT_FROM_INPUT_ATTACHMENT default(0)
  39. #pragma define-meta CC_PLATFORM_ANDROID_AND_WEBGL default(0)
  40. #pragma define-meta CC_ENABLE_WEBGL_HIGHP_STRUCT_VALUES default(0)
  41. // When sampling RTs, Y-flip is needed if the screen space sign Y is positive (pointing upwards)
  42. #pragma define CC_HANDLE_RT_SAMPLE_FLIP(uv) uv = cc_cameraPos.w > 1.0 ? vec2(uv.x, 1.0 - uv.y) : uv
  43. #pragma define CC_HANDLE_GET_CLIP_FLIP(uv) uv = cc_cameraPos.w == 0.0 ? vec2(uv.x, -uv.y) : uv
  44. #pragma define CC_HANDLE_CLIP_FLIP_FROM_VAL(uv, flip) uv = flip == 0.0 ? vec2(uv.x, -uv.y) : uv
  45. // CC_USE_LIGHTMAP Values
  46. #define LIGHT_MAP_TYPE_DISABLED 0
  47. #define LIGHT_MAP_TYPE_ALL_IN_ONE 1
  48. #define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2
  49. // CC_USE_REFLECTION_PROBE Values
  50. #define REFLECTION_PROBE_TYPE_NONE 0
  51. #define REFLECTION_PROBE_TYPE_CUBE 1
  52. #define REFLECTION_PROBE_TYPE_PLANAR 2
  53. #define REFLECTION_PROBE_TYPE_BLEND 3
  54. #define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4
  55. #pragma define IS_REFLECTION_PROBE_USE_RGBE(mipcount) mipcount > 1000.0
  56. #pragma define RESTORE_REFLECTION_PROBE_MIP_COUNT(mipcount) if (mipcount > 1000.0) mipcount -= 1000.0
  57. // Light Type
  58. #define LIGHT_TYPE_DIRECTIONAL 0.0
  59. #define LIGHT_TYPE_SPHERE 1.0
  60. #define LIGHT_TYPE_SPOT 2.0
  61. #define LIGHT_TYPE_POINT 3.0
  62. #define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0
  63. #define IS_DIRECTIONAL_LIGHT(light_type) equalf_lowp(light_type, LIGHT_TYPE_DIRECTIONAL)
  64. #define IS_SPHERE_LIGHT(light_type) equalf_lowp(light_type, LIGHT_TYPE_SPHERE)
  65. #define IS_SPOT_LIGHT(light_type) equalf_lowp(light_type, LIGHT_TYPE_SPOT)
  66. #define IS_POINT_LIGHT(light_type) equalf_lowp(light_type, LIGHT_TYPE_POINT)
  67. #define IS_RANGED_DIRECTIONAL_LIGHT(light_type) equalf_lowp(light_type, LIGHT_TYPE_RANGED_DIRECTIONAL)
  68. // CC_TONE_MAPPING_TYPE Values
  69. #define TONE_MAPPING_ACES 0
  70. #define TONE_MAPPING_LINEAR 1
  71. // Material
  72. #define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0
  73. // CC_USE_DEBUG_VIEW Values
  74. #ifndef CC_SURFACES_DEBUG_VIEW_SINGLE
  75. #define CC_SURFACES_DEBUG_VIEW_SINGLE 1
  76. #endif
  77. #ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC
  78. #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2
  79. #endif