ShaderLib.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. import { ShaderChunk } from './ShaderChunk';
  2. import { UniformsUtils } from './UniformsUtils';
  3. import { Vector3 } from '../../math/Vector3';
  4. import { UniformsLib } from './UniformsLib';
  5. import { Color } from '../../math/Color';
  6. /**
  7. * @author alteredq / http://alteredqualia.com/
  8. * @author mrdoob / http://mrdoob.com/
  9. * @author mikael emtinger / http://gomo.se/
  10. */
  11. var ShaderLib = {
  12. basic: {
  13. uniforms: UniformsUtils.merge( [
  14. UniformsLib.common,
  15. UniformsLib.aomap,
  16. UniformsLib.lightmap,
  17. UniformsLib.fog
  18. ] ),
  19. vertexShader: ShaderChunk.meshbasic_vert,
  20. fragmentShader: ShaderChunk.meshbasic_frag
  21. },
  22. lambert: {
  23. uniforms: UniformsUtils.merge( [
  24. UniformsLib.common,
  25. UniformsLib.aomap,
  26. UniformsLib.lightmap,
  27. UniformsLib.emissivemap,
  28. UniformsLib.fog,
  29. UniformsLib.lights,
  30. {
  31. emissive: { value: new Color( 0x000000 ) }
  32. }
  33. ] ),
  34. vertexShader: ShaderChunk.meshlambert_vert,
  35. fragmentShader: ShaderChunk.meshlambert_frag
  36. },
  37. phong: {
  38. uniforms: UniformsUtils.merge( [
  39. UniformsLib.common,
  40. UniformsLib.aomap,
  41. UniformsLib.lightmap,
  42. UniformsLib.emissivemap,
  43. UniformsLib.bumpmap,
  44. UniformsLib.normalmap,
  45. UniformsLib.displacementmap,
  46. UniformsLib.gradientmap,
  47. UniformsLib.fog,
  48. UniformsLib.lights,
  49. {
  50. emissive: { value: new Color( 0x000000 ) },
  51. specular: { value: new Color( 0x111111 ) },
  52. shininess: { value: 30 }
  53. }
  54. ] ),
  55. vertexShader: ShaderChunk.meshphong_vert,
  56. fragmentShader: ShaderChunk.meshphong_frag
  57. },
  58. standard: {
  59. uniforms: UniformsUtils.merge( [
  60. UniformsLib.common,
  61. UniformsLib.aomap,
  62. UniformsLib.lightmap,
  63. UniformsLib.emissivemap,
  64. UniformsLib.bumpmap,
  65. UniformsLib.normalmap,
  66. UniformsLib.displacementmap,
  67. UniformsLib.roughnessmap,
  68. UniformsLib.metalnessmap,
  69. UniformsLib.fog,
  70. UniformsLib.lights,
  71. {
  72. emissive: { value: new Color( 0x000000 ) },
  73. roughness: { value: 0.5 },
  74. metalness: { value: 0.5 },
  75. envMapIntensity: { value: 1 } // temporary
  76. }
  77. ] ),
  78. vertexShader: ShaderChunk.meshphysical_vert,
  79. fragmentShader: ShaderChunk.meshphysical_frag
  80. },
  81. points: {
  82. uniforms: UniformsUtils.merge( [
  83. UniformsLib.points,
  84. UniformsLib.fog
  85. ] ),
  86. vertexShader: ShaderChunk.points_vert,
  87. fragmentShader: ShaderChunk.points_frag
  88. },
  89. dashed: {
  90. uniforms: UniformsUtils.merge( [
  91. UniformsLib.common,
  92. UniformsLib.fog,
  93. {
  94. scale: { value: 1 },
  95. dashSize: { value: 1 },
  96. totalSize: { value: 2 }
  97. }
  98. ] ),
  99. vertexShader: ShaderChunk.linedashed_vert,
  100. fragmentShader: ShaderChunk.linedashed_frag
  101. },
  102. depth: {
  103. uniforms: UniformsUtils.merge( [
  104. UniformsLib.common,
  105. UniformsLib.displacementmap
  106. ] ),
  107. vertexShader: ShaderChunk.depth_vert,
  108. fragmentShader: ShaderChunk.depth_frag
  109. },
  110. normal: {
  111. uniforms: UniformsUtils.merge( [
  112. UniformsLib.common,
  113. UniformsLib.bumpmap,
  114. UniformsLib.normalmap,
  115. UniformsLib.displacementmap,
  116. {
  117. opacity: { value: 1.0 }
  118. }
  119. ] ),
  120. vertexShader: ShaderChunk.normal_vert,
  121. fragmentShader: ShaderChunk.normal_frag
  122. },
  123. /* -------------------------------------------------------------------------
  124. // Cube map shader
  125. ------------------------------------------------------------------------- */
  126. cube: {
  127. uniforms: {
  128. tCube: { value: null },
  129. tFlip: { value: - 1 },
  130. opacity: { value: 1.0 }
  131. },
  132. vertexShader: ShaderChunk.cube_vert,
  133. fragmentShader: ShaderChunk.cube_frag
  134. },
  135. /* -------------------------------------------------------------------------
  136. // Cube map shader
  137. ------------------------------------------------------------------------- */
  138. equirect: {
  139. uniforms: {
  140. tEquirect: { value: null },
  141. tFlip: { value: - 1 }
  142. },
  143. vertexShader: ShaderChunk.equirect_vert,
  144. fragmentShader: ShaderChunk.equirect_frag
  145. },
  146. distanceRGBA: {
  147. uniforms: UniformsUtils.merge( [
  148. UniformsLib.common,
  149. {
  150. lightPos: { value: new Vector3() }
  151. }
  152. ] ),
  153. vertexShader: ShaderChunk.distanceRGBA_vert,
  154. fragmentShader: ShaderChunk.distanceRGBA_frag
  155. }
  156. };
  157. ShaderLib.physical = {
  158. uniforms: UniformsUtils.merge( [
  159. ShaderLib.standard.uniforms,
  160. {
  161. clearCoat: { value: 0 },
  162. clearCoatRoughness: { value: 0 }
  163. }
  164. ] ),
  165. vertexShader: ShaderChunk.meshphysical_vert,
  166. fragmentShader: ShaderChunk.meshphysical_frag
  167. };
  168. export { ShaderLib };