ShaderLib.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. import { ShaderChunk } from './ShaderChunk.js';
  2. import { mergeUniforms } from './UniformsUtils.js';
  3. import { Vector2 } from '../../math/Vector2.js';
  4. import { Vector3 } from '../../math/Vector3.js';
  5. import { UniformsLib } from './UniformsLib.js';
  6. import { Color } from '../../math/Color.js';
  7. import { Matrix3 } from '../../math/Matrix3.js';
  8. const ShaderLib = {
  9. basic: {
  10. uniforms: /*@__PURE__*/ mergeUniforms( [
  11. UniformsLib.common,
  12. UniformsLib.specularmap,
  13. UniformsLib.envmap,
  14. UniformsLib.aomap,
  15. UniformsLib.lightmap,
  16. UniformsLib.fog
  17. ] ),
  18. vertexShader: ShaderChunk.meshbasic_vert,
  19. fragmentShader: ShaderChunk.meshbasic_frag
  20. },
  21. lambert: {
  22. uniforms: /*@__PURE__*/ mergeUniforms( [
  23. UniformsLib.common,
  24. UniformsLib.specularmap,
  25. UniformsLib.envmap,
  26. UniformsLib.aomap,
  27. UniformsLib.lightmap,
  28. UniformsLib.emissivemap,
  29. UniformsLib.bumpmap,
  30. UniformsLib.normalmap,
  31. UniformsLib.displacementmap,
  32. UniformsLib.fog,
  33. UniformsLib.lights,
  34. {
  35. emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
  36. }
  37. ] ),
  38. vertexShader: ShaderChunk.meshlambert_vert,
  39. fragmentShader: ShaderChunk.meshlambert_frag
  40. },
  41. phong: {
  42. uniforms: /*@__PURE__*/ mergeUniforms( [
  43. UniformsLib.common,
  44. UniformsLib.specularmap,
  45. UniformsLib.envmap,
  46. UniformsLib.aomap,
  47. UniformsLib.lightmap,
  48. UniformsLib.emissivemap,
  49. UniformsLib.bumpmap,
  50. UniformsLib.normalmap,
  51. UniformsLib.displacementmap,
  52. UniformsLib.fog,
  53. UniformsLib.lights,
  54. {
  55. emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
  56. specular: { value: /*@__PURE__*/ new Color( 0x111111 ) },
  57. shininess: { value: 30 }
  58. }
  59. ] ),
  60. vertexShader: ShaderChunk.meshphong_vert,
  61. fragmentShader: ShaderChunk.meshphong_frag
  62. },
  63. standard: {
  64. uniforms: /*@__PURE__*/ mergeUniforms( [
  65. UniformsLib.common,
  66. UniformsLib.envmap,
  67. UniformsLib.aomap,
  68. UniformsLib.lightmap,
  69. UniformsLib.emissivemap,
  70. UniformsLib.bumpmap,
  71. UniformsLib.normalmap,
  72. UniformsLib.displacementmap,
  73. UniformsLib.roughnessmap,
  74. UniformsLib.metalnessmap,
  75. UniformsLib.fog,
  76. UniformsLib.lights,
  77. {
  78. emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
  79. roughness: { value: 1.0 },
  80. metalness: { value: 0.0 },
  81. envMapIntensity: { value: 1 }
  82. }
  83. ] ),
  84. vertexShader: ShaderChunk.meshphysical_vert,
  85. fragmentShader: ShaderChunk.meshphysical_frag
  86. },
  87. toon: {
  88. uniforms: /*@__PURE__*/ mergeUniforms( [
  89. UniformsLib.common,
  90. UniformsLib.aomap,
  91. UniformsLib.lightmap,
  92. UniformsLib.emissivemap,
  93. UniformsLib.bumpmap,
  94. UniformsLib.normalmap,
  95. UniformsLib.displacementmap,
  96. UniformsLib.gradientmap,
  97. UniformsLib.fog,
  98. UniformsLib.lights,
  99. {
  100. emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
  101. }
  102. ] ),
  103. vertexShader: ShaderChunk.meshtoon_vert,
  104. fragmentShader: ShaderChunk.meshtoon_frag
  105. },
  106. matcap: {
  107. uniforms: /*@__PURE__*/ mergeUniforms( [
  108. UniformsLib.common,
  109. UniformsLib.bumpmap,
  110. UniformsLib.normalmap,
  111. UniformsLib.displacementmap,
  112. UniformsLib.fog,
  113. {
  114. matcap: { value: null }
  115. }
  116. ] ),
  117. vertexShader: ShaderChunk.meshmatcap_vert,
  118. fragmentShader: ShaderChunk.meshmatcap_frag
  119. },
  120. points: {
  121. uniforms: /*@__PURE__*/ mergeUniforms( [
  122. UniformsLib.points,
  123. UniformsLib.fog
  124. ] ),
  125. vertexShader: ShaderChunk.points_vert,
  126. fragmentShader: ShaderChunk.points_frag
  127. },
  128. dashed: {
  129. uniforms: /*@__PURE__*/ mergeUniforms( [
  130. UniformsLib.common,
  131. UniformsLib.fog,
  132. {
  133. scale: { value: 1 },
  134. dashSize: { value: 1 },
  135. totalSize: { value: 2 }
  136. }
  137. ] ),
  138. vertexShader: ShaderChunk.linedashed_vert,
  139. fragmentShader: ShaderChunk.linedashed_frag
  140. },
  141. depth: {
  142. uniforms: /*@__PURE__*/ mergeUniforms( [
  143. UniformsLib.common,
  144. UniformsLib.displacementmap
  145. ] ),
  146. vertexShader: ShaderChunk.depth_vert,
  147. fragmentShader: ShaderChunk.depth_frag
  148. },
  149. normal: {
  150. uniforms: /*@__PURE__*/ mergeUniforms( [
  151. UniformsLib.common,
  152. UniformsLib.bumpmap,
  153. UniformsLib.normalmap,
  154. UniformsLib.displacementmap,
  155. {
  156. opacity: { value: 1.0 }
  157. }
  158. ] ),
  159. vertexShader: ShaderChunk.meshnormal_vert,
  160. fragmentShader: ShaderChunk.meshnormal_frag
  161. },
  162. sprite: {
  163. uniforms: /*@__PURE__*/ mergeUniforms( [
  164. UniformsLib.sprite,
  165. UniformsLib.fog
  166. ] ),
  167. vertexShader: ShaderChunk.sprite_vert,
  168. fragmentShader: ShaderChunk.sprite_frag
  169. },
  170. background: {
  171. uniforms: {
  172. uvTransform: { value: /*@__PURE__*/ new Matrix3() },
  173. t2D: { value: null },
  174. backgroundIntensity: { value: 1 }
  175. },
  176. vertexShader: ShaderChunk.background_vert,
  177. fragmentShader: ShaderChunk.background_frag
  178. },
  179. backgroundCube: {
  180. uniforms: {
  181. envMap: { value: null },
  182. flipEnvMap: { value: - 1 },
  183. backgroundBlurriness: { value: 0 },
  184. backgroundIntensity: { value: 1 },
  185. backgroundRotation: { value: /*@__PURE__*/ new Matrix3() }
  186. },
  187. vertexShader: ShaderChunk.backgroundCube_vert,
  188. fragmentShader: ShaderChunk.backgroundCube_frag
  189. },
  190. cube: {
  191. uniforms: {
  192. tCube: { value: null },
  193. tFlip: { value: - 1 },
  194. opacity: { value: 1.0 }
  195. },
  196. vertexShader: ShaderChunk.cube_vert,
  197. fragmentShader: ShaderChunk.cube_frag
  198. },
  199. equirect: {
  200. uniforms: {
  201. tEquirect: { value: null },
  202. },
  203. vertexShader: ShaderChunk.equirect_vert,
  204. fragmentShader: ShaderChunk.equirect_frag
  205. },
  206. distanceRGBA: {
  207. uniforms: /*@__PURE__*/ mergeUniforms( [
  208. UniformsLib.common,
  209. UniformsLib.displacementmap,
  210. {
  211. referencePosition: { value: /*@__PURE__*/ new Vector3() },
  212. nearDistance: { value: 1 },
  213. farDistance: { value: 1000 }
  214. }
  215. ] ),
  216. vertexShader: ShaderChunk.distanceRGBA_vert,
  217. fragmentShader: ShaderChunk.distanceRGBA_frag
  218. },
  219. shadow: {
  220. uniforms: /*@__PURE__*/ mergeUniforms( [
  221. UniformsLib.lights,
  222. UniformsLib.fog,
  223. {
  224. color: { value: /*@__PURE__*/ new Color( 0x00000 ) },
  225. opacity: { value: 1.0 }
  226. },
  227. ] ),
  228. vertexShader: ShaderChunk.shadow_vert,
  229. fragmentShader: ShaderChunk.shadow_frag
  230. }
  231. };
  232. ShaderLib.physical = {
  233. uniforms: /*@__PURE__*/ mergeUniforms( [
  234. ShaderLib.standard.uniforms,
  235. {
  236. clearcoat: { value: 0 },
  237. clearcoatMap: { value: null },
  238. clearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  239. clearcoatNormalMap: { value: null },
  240. clearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  241. clearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },
  242. clearcoatRoughness: { value: 0 },
  243. clearcoatRoughnessMap: { value: null },
  244. clearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  245. dispersion: { value: 0 },
  246. iridescence: { value: 0 },
  247. iridescenceMap: { value: null },
  248. iridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  249. iridescenceIOR: { value: 1.3 },
  250. iridescenceThicknessMinimum: { value: 100 },
  251. iridescenceThicknessMaximum: { value: 400 },
  252. iridescenceThicknessMap: { value: null },
  253. iridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  254. sheen: { value: 0 },
  255. sheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
  256. sheenColorMap: { value: null },
  257. sheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  258. sheenRoughness: { value: 1 },
  259. sheenRoughnessMap: { value: null },
  260. sheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  261. transmission: { value: 0 },
  262. transmissionMap: { value: null },
  263. transmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  264. transmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },
  265. transmissionSamplerMap: { value: null },
  266. thickness: { value: 0 },
  267. thicknessMap: { value: null },
  268. thicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  269. attenuationDistance: { value: 0 },
  270. attenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
  271. specularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },
  272. specularColorMap: { value: null },
  273. specularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  274. specularIntensity: { value: 1 },
  275. specularIntensityMap: { value: null },
  276. specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  277. anisotropyVector: { value: /*@__PURE__*/ new Vector2() },
  278. anisotropyMap: { value: null },
  279. anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },
  280. }
  281. ] ),
  282. vertexShader: ShaderChunk.meshphysical_vert,
  283. fragmentShader: ShaderChunk.meshphysical_frag
  284. };
  285. export { ShaderLib };