common-vs.chunk 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_POS
  2. // depends on CC_SURFACES_VERTEX_MODIFY_LOCAL_POS
  3. vec3 SurfacesVertexModifyLocalPos(in SurfacesStandardVertexIntermediate In)
  4. {
  5. // compatible issue: crash with vulkan + MI6
  6. return vec3(In.position.xyz);
  7. }
  8. #endif
  9. #ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_NORMAL
  10. // depends on CC_SURFACES_VERTEX_MODIFY_LOCAL_NORMAL
  11. vec3 SurfacesVertexModifyLocalNormal(in SurfacesStandardVertexIntermediate In)
  12. {
  13. return In.normal.xyz;
  14. }
  15. #endif
  16. #ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_TANGENT
  17. #if CC_SURFACES_USE_TANGENT_SPACE
  18. // depends on CC_SURFACES_VERTEX_MODIFY_LOCAL_TANGENT
  19. vec4 SurfacesVertexModifyLocalTangent(in SurfacesStandardVertexIntermediate In)
  20. {
  21. return In.tangent;
  22. }
  23. #endif
  24. #endif
  25. #ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_SHARED_DATA
  26. // depends on CC_SURFACES_VERTEX_MODIFY_LOCAL_SHARED_DATA
  27. // some vertex datas use shared raw data, avoid sample / calculate same raw data multiply times, use this function for better performance
  28. // this function invokes before world transform
  29. void SurfacesVertexModifyLocalSharedData(inout SurfacesStandardVertexIntermediate In)
  30. {
  31. }
  32. #endif
  33. #ifndef CC_SURFACES_VERTEX_MODIFY_WORLD_POS
  34. // depends on CC_SURFACES_VERTEX_MODIFY_WORLD_POS
  35. vec3 SurfacesVertexModifyWorldPos(in SurfacesStandardVertexIntermediate In)
  36. {
  37. return In.worldPos;
  38. }
  39. #endif
  40. #ifndef CC_SURFACES_VERTEX_MODIFY_CLIP_POS
  41. // depends on CC_SURFACES_VERTEX_MODIFY_CLIP_POS
  42. vec4 SurfacesVertexModifyClipPos(in SurfacesStandardVertexIntermediate In)
  43. {
  44. return In.clipPos;
  45. }
  46. #endif
  47. #ifndef CC_SURFACES_VERTEX_MODIFY_UV
  48. // depends on CC_SURFACES_VERTEX_MODIFY_UV
  49. void SurfacesVertexModifyUV(inout SurfacesStandardVertexIntermediate In)
  50. {
  51. // In.texCoord = In.texCoord;
  52. // #if CC_SURFACES_USE_SECOND_UV
  53. // In.texCoord1 = In.texCoord1;
  54. // #endif
  55. }
  56. #endif
  57. #ifndef CC_SURFACES_VERTEX_MODIFY_WORLD_NORMAL
  58. // depends on CC_SURFACES_VERTEX_MODIFY_WORLD_NORMAL
  59. vec3 SurfacesVertexModifyWorldNormal(in SurfacesStandardVertexIntermediate In)
  60. {
  61. vec3 worldNormal = In.worldNormal.xyz;
  62. #if CC_SURFACES_USE_TWO_SIDED
  63. worldNormal.xyz *= In.worldNormal.w;
  64. #endif
  65. return worldNormal;
  66. }
  67. #endif
  68. #ifndef CC_SURFACES_VERTEX_MODIFY_SHADOW_BIAS
  69. // depends on CC_SURFACES_VERTEX_MODIFY_SHADOW_BIAS
  70. // shadow bias for submesh-level
  71. vec2 SurfacesVertexModifyShadowBias(in SurfacesStandardVertexIntermediate In, vec2 originShadowBias)
  72. {
  73. return originShadowBias;
  74. }
  75. #endif
  76. #ifndef CC_SURFACES_VERTEX_MODIFY_SHARED_DATA
  77. // depends on CC_SURFACES_VERTEX_MODIFY_SHARED_DATA
  78. // some vertex datas use shared raw data, avoid sample / calculate same raw data multiply times, use this function for better performance
  79. // this function invokes at last
  80. void SurfacesVertexModifySharedData(inout SurfacesStandardVertexIntermediate In)
  81. {
  82. }
  83. #endif