pbrFragmentSamplersDeclaration.fx 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. #ifdef ENVIRONMENTBRDF
  2. #ifdef WEBGGPU
  3. layout(set = 2, binding = 1) uniform texture2D environmentBrdfSamplerTexture;
  4. layout(set = 2, binding = 2) uniform sampler environmentBrdfSamplerSampler;
  5. #define environmentBrdfSampler sampler2D(environmentBrdfSamplerTexture, environmentBrdfSamplerSampler)
  6. #else
  7. uniform sampler2D environmentBrdfSampler;
  8. #endif
  9. #endif
  10. // Reflection
  11. #ifdef REFLECTION
  12. #ifdef REFLECTIONMAP_3D
  13. #define sampleReflection(s, c) textureCube(s, c)
  14. #ifdef WEBGGPU
  15. layout(set = 2, binding = 3) uniform textureCube reflectionSamplerTexture;
  16. layout(set = 2, binding = 4) uniform sampler reflectionSamplerSampler;
  17. #define reflectionSampler samplerCube(reflectionSamplerTexture, reflectionSamplerSampler)
  18. #else
  19. uniform samplerCube reflectionSampler;
  20. #endif
  21. #ifdef LODBASEDMICROSFURACE
  22. #define sampleReflectionLod(s, c, l) textureCubeLodEXT(s, c, l)
  23. #else
  24. uniform samplerCube reflectionSamplerLow;
  25. uniform samplerCube reflectionSamplerHigh;
  26. #endif
  27. #else
  28. #define sampleReflection(s, c) texture2D(s, c)
  29. uniform sampler2D reflectionSampler;
  30. #ifdef LODBASEDMICROSFURACE
  31. #define sampleReflectionLod(s, c, l) texture2DLodEXT(s, c, l)
  32. #else
  33. uniform samplerCube reflectionSamplerLow;
  34. uniform samplerCube reflectionSamplerHigh;
  35. #endif
  36. #endif
  37. #ifdef REFLECTIONMAP_SKYBOX
  38. #ifdef WEBGGPU
  39. layout(location = 4) in vec3 vPositionUVW;
  40. #else
  41. varying vec3 vPositionUVW;
  42. #endif
  43. #else
  44. #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
  45. varying vec3 vDirectionW;
  46. #endif
  47. #endif
  48. #endif
  49. #ifdef ALBEDO
  50. #if ALBEDODIRECTUV == 1
  51. #define vAlbedoUV vMainUV1
  52. #elif ALBEDODIRECTUV == 2
  53. #define vAlbedoUV vMainUV2
  54. #else
  55. varying vec2 vAlbedoUV;
  56. #endif
  57. #ifdef WEBGGPU
  58. layout(set = 2, binding = 5) uniform texture2D albedoSamplerTexture;
  59. layout(set = 2, binding = 6) uniform sampler albedoSamplerSampler;
  60. #define albedoSampler sampler2D(albedoSamplerTexture, albedoSamplerSampler)
  61. #else
  62. uniform sampler2D albedoSampler;
  63. #endif
  64. #endif
  65. #ifdef REFLECTIVITY
  66. #if REFLECTIVITYDIRECTUV == 1
  67. #define vReflectivityUV vMainUV1
  68. #elif REFLECTIVITYDIRECTUV == 2
  69. #define vReflectivityUV vMainUV2
  70. #else
  71. varying vec2 vReflectivityUV;
  72. #endif
  73. #ifdef WEBGGPU
  74. layout(set = 2, binding = 7) uniform texture2D reflectivitySamplerTexture;
  75. layout(set = 2, binding = 8) uniform sampler reflectivitySamplerSampler;
  76. #define reflectivitySampler sampler2D(reflectivitySamplerTexture, reflectivitySamplerSampler)
  77. #else
  78. uniform sampler2D reflectivitySampler;
  79. #endif
  80. #endif
  81. #ifdef AMBIENT
  82. #if AMBIENTDIRECTUV == 1
  83. #define vAmbientUV vMainUV1
  84. #elif AMBIENTDIRECTUV == 2
  85. #define vAmbientUV vMainUV2
  86. #else
  87. varying vec2 vAmbientUV;
  88. #endif
  89. #ifdef WEBGGPU
  90. layout(set = 2, binding = 9) uniform texture2D ambientSamplerTexture;
  91. layout(set = 2, binding = 10) uniform sampler ambientSamplerSampler;
  92. #define ambientSampler sampler2D(ambientSamplerTexture, ambientSamplerSampler)
  93. #else
  94. uniform sampler2D ambientSampler;
  95. #endif
  96. #endif
  97. #ifdef EMISSIVE
  98. #if EMISSIVEDIRECTUV == 1
  99. #define vEmissiveUV vMainUV1
  100. #elif EMISSIVEDIRECTUV == 2
  101. #define vEmissiveUV vMainUV2
  102. #else
  103. varying vec2 vEmissiveUV;
  104. #endif
  105. #ifdef WEBGGPU
  106. layout(set = 2, binding = 11) uniform texture2D emissiveSamplerTexture;
  107. layout(set = 2, binding = 12) uniform sampler emissiveSamplerSampler;
  108. #define emissiveSampler sampler2D(emissiveSamplerTexture, emissiveSamplerSampler)
  109. #else
  110. uniform sampler2D emissiveSampler;
  111. #endif
  112. #endif
  113. #ifdef BUMP
  114. #if BUMPDIRECTUV == 1
  115. #define vBumpUV vMainUV1
  116. #elif BUMPDIRECTUV == 2
  117. #define vBumpUV vMainUV2
  118. #else
  119. varying vec2 vBumpUV;
  120. #endif
  121. #ifdef WEBGGPU
  122. layout(set = 2, binding = 13) uniform texture2D bumpSamplerTexture;
  123. layout(set = 2, binding = 14) uniform sampler bumpSamplerSampler;
  124. #define bumpSampler sampler2D(bumpSamplerTexture, bumpSamplerSampler)
  125. #else
  126. uniform sampler2D bumpSampler;
  127. #endif
  128. #endif
  129. #ifdef OPACITY
  130. #if OPACITYDIRECTUV == 1
  131. #define vOpacityUV vMainUV1
  132. #elif OPACITYDIRECTUV == 2
  133. #define vOpacityUV vMainUV2
  134. #else
  135. varying vec2 vOpacityUV;
  136. #endif
  137. uniform sampler2D opacitySampler;
  138. #endif
  139. #ifdef LIGHTMAP
  140. #if LIGHTMAPDIRECTUV == 1
  141. #define vLightmapUV vMainUV1
  142. #elif LIGHTMAPDIRECTUV == 2
  143. #define vLightmapUV vMainUV2
  144. #else
  145. varying vec2 vLightmapUV;
  146. #endif
  147. uniform sampler2D lightmapSampler;
  148. #endif
  149. #ifdef MICROSURFACEMAP
  150. #if MICROSURFACEMAPDIRECTUV == 1
  151. #define vMicroSurfaceSamplerUV vMainUV1
  152. #elif MICROSURFACEMAPDIRECTUV == 2
  153. #define vMicroSurfaceSamplerUV vMainUV2
  154. #else
  155. varying vec2 vMicroSurfaceSamplerUV;
  156. #endif
  157. uniform sampler2D microSurfaceSampler;
  158. #endif
  159. #ifdef CLEARCOAT
  160. #ifdef CLEARCOAT_TEXTURE
  161. #if CLEARCOAT_TEXTUREDIRECTUV == 1
  162. #define vClearCoatUV vMainUV1
  163. #elif CLEARCOAT_TEXTUREDIRECTUV == 2
  164. #define vClearCoatUV vMainUV2
  165. #else
  166. varying vec2 vClearCoatUV;
  167. #endif
  168. uniform sampler2D clearCoatSampler;
  169. #endif
  170. #ifdef CLEARCOAT_BUMP
  171. #if CLEARCOAT_BUMPDIRECTUV == 1
  172. #define vClearCoatBumpUV vMainUV1
  173. #elif CLEARCOAT_BUMPDIRECTUV == 2
  174. #define vClearCoatBumpUV vMainUV2
  175. #else
  176. varying vec2 vClearCoatBumpUV;
  177. #endif
  178. uniform sampler2D clearCoatBumpSampler;
  179. #endif
  180. #ifdef CLEARCOAT_TINT_TEXTURE
  181. #if CLEARCOAT_TINT_TEXTUREDIRECTUV == 1
  182. #define vClearCoatTintUV vMainUV1
  183. #elif CLEARCOAT_TINT_TEXTUREDIRECTUV == 2
  184. #define vClearCoatTintUV vMainUV2
  185. #else
  186. varying vec2 vClearCoatTintUV;
  187. #endif
  188. uniform sampler2D clearCoatTintSampler;
  189. #endif
  190. #endif
  191. #ifdef SHEEN
  192. #ifdef SHEEN_TEXTURE
  193. #if SHEEN_TEXTUREDIRECTUV == 1
  194. #define vSheenUV vMainUV1
  195. #elif SHEEN_TEXTUREDIRECTUV == 2
  196. #define vSheenUV vMainUV2
  197. #else
  198. varying vec2 vSheenUV;
  199. #endif
  200. uniform sampler2D sheenSampler;
  201. #endif
  202. #endif
  203. #ifdef ANISOTROPIC
  204. #ifdef ANISOTROPIC_TEXTURE
  205. #if ANISOTROPIC_TEXTUREDIRECTUV == 1
  206. #define vAnisotropyUV vMainUV1
  207. #elif ANISOTROPIC_TEXTUREDIRECTUV == 2
  208. #define vAnisotropyUV vMainUV2
  209. #else
  210. varying vec2 vAnisotropyUV;
  211. #endif
  212. uniform sampler2D anisotropySampler;
  213. #endif
  214. #endif
  215. // SUBSURFACE
  216. #ifdef SUBSURFACE
  217. #ifdef SS_REFRACTION
  218. #ifdef SS_REFRACTIONMAP_3D
  219. #define sampleRefraction(s, c) textureCube(s, c)
  220. uniform samplerCube refractionSampler;
  221. #ifdef LODBASEDMICROSFURACE
  222. #define sampleRefractionLod(s, c, l) textureCubeLodEXT(s, c, l)
  223. #else
  224. uniform samplerCube refractionSamplerLow;
  225. uniform samplerCube refractionSamplerHigh;
  226. #endif
  227. #else
  228. #define sampleRefraction(s, c) texture2D(s, c)
  229. uniform sampler2D refractionSampler;
  230. #ifdef LODBASEDMICROSFURACE
  231. #define sampleRefractionLod(s, c, l) texture2DLodEXT(s, c, l)
  232. #else
  233. uniform samplerCube refractionSamplerLow;
  234. uniform samplerCube refractionSamplerHigh;
  235. #endif
  236. #endif
  237. #endif
  238. #ifdef SS_THICKNESSANDMASK_TEXTURE
  239. #if SS_THICKNESSANDMASK_TEXTUREDIRECTUV == 1
  240. #define vThicknessUV vMainUV1
  241. #elif SS_THICKNESSANDMASK_TEXTUREDIRECTUV == 2
  242. #define vThicknessUV vMainUV2
  243. #else
  244. varying vec2 vThicknessUV;
  245. #endif
  246. uniform sampler2D thicknessSampler;
  247. #endif
  248. #endif