super-three 0.157.1 → 0.160.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +6 -4
  2. package/build/three.cjs +3100 -1537
  3. package/build/three.js +3100 -1537
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +3093 -1538
  6. package/build/three.module.min.js +1 -1
  7. package/examples/jsm/Addons.js +291 -0
  8. package/examples/jsm/controls/FlyControls.js +26 -0
  9. package/examples/jsm/controls/OrbitControls.js +62 -41
  10. package/examples/jsm/controls/TransformControls.js +27 -11
  11. package/examples/jsm/csm/CSMShader.js +53 -48
  12. package/examples/jsm/exporters/GLTFExporter.js +151 -3
  13. package/examples/jsm/exporters/USDZExporter.js +27 -19
  14. package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
  15. package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
  16. package/examples/jsm/helpers/TextureHelper.js +237 -0
  17. package/examples/jsm/interactive/HTMLMesh.js +9 -2
  18. package/examples/jsm/libs/lottie_canvas.module.js +6 -1
  19. package/examples/jsm/libs/opentype.module.js +13 -75
  20. package/examples/jsm/libs/surfaceNet.js +201 -0
  21. package/examples/jsm/lines/LineMaterial.js +16 -33
  22. package/examples/jsm/loaders/ColladaLoader.js +0 -6
  23. package/examples/jsm/loaders/DRACOLoader.js +4 -3
  24. package/examples/jsm/loaders/FBXLoader.js +294 -124
  25. package/examples/jsm/loaders/GLTFLoader.js +83 -6
  26. package/examples/jsm/loaders/LUTImageLoader.js +162 -0
  27. package/examples/jsm/loaders/MaterialXLoader.js +73 -54
  28. package/examples/jsm/loaders/NRRDLoader.js +0 -13
  29. package/examples/jsm/loaders/SVGLoader.js +4 -4
  30. package/examples/jsm/loaders/USDZLoader.js +3 -17
  31. package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
  32. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  33. package/examples/jsm/math/Capsule.js +0 -55
  34. package/examples/jsm/math/Octree.js +85 -7
  35. package/examples/jsm/misc/Timer.js +119 -0
  36. package/examples/jsm/misc/TubePainter.js +3 -6
  37. package/examples/jsm/modifiers/CurveModifier.js +20 -2
  38. package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
  39. package/examples/jsm/modifiers/TessellateModifier.js +3 -3
  40. package/examples/jsm/nodes/Nodes.js +16 -12
  41. package/examples/jsm/nodes/accessors/CameraNode.js +18 -2
  42. package/examples/jsm/nodes/accessors/CubeTextureNode.js +5 -73
  43. package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
  44. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  45. package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
  46. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +11 -2
  47. package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
  48. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -3
  49. package/examples/jsm/nodes/accessors/MorphNode.js +191 -16
  50. package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
  51. package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
  52. package/examples/jsm/nodes/accessors/ReferenceNode.js +25 -1
  53. package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
  54. package/examples/jsm/nodes/accessors/TextureNode.js +123 -37
  55. package/examples/jsm/nodes/code/CodeNode.js +3 -3
  56. package/examples/jsm/nodes/code/FunctionNode.js +1 -1
  57. package/examples/jsm/nodes/core/AssignNode.js +72 -0
  58. package/examples/jsm/nodes/core/AttributeNode.js +7 -1
  59. package/examples/jsm/nodes/core/CacheNode.js +4 -1
  60. package/examples/jsm/nodes/core/ConstNode.js +1 -1
  61. package/examples/jsm/nodes/core/LightingModel.js +3 -1
  62. package/examples/jsm/nodes/core/Node.js +13 -15
  63. package/examples/jsm/nodes/core/NodeBuilder.js +209 -42
  64. package/examples/jsm/nodes/core/NodeFrame.js +10 -8
  65. package/examples/jsm/nodes/core/NodeUniform.js +12 -0
  66. package/examples/jsm/nodes/core/NodeUtils.js +7 -9
  67. package/examples/jsm/nodes/core/OutputStructNode.js +4 -4
  68. package/examples/jsm/nodes/core/ParameterNode.js +33 -0
  69. package/examples/jsm/nodes/core/PropertyNode.js +15 -6
  70. package/examples/jsm/nodes/core/StackNode.js +7 -17
  71. package/examples/jsm/nodes/core/StructTypeNode.js +4 -4
  72. package/examples/jsm/nodes/core/TempNode.js +1 -1
  73. package/examples/jsm/nodes/core/UniformGroup.js +13 -0
  74. package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
  75. package/examples/jsm/nodes/core/UniformNode.js +17 -0
  76. package/examples/jsm/nodes/core/VarNode.js +7 -34
  77. package/examples/jsm/nodes/core/VaryingNode.js +3 -7
  78. package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
  79. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +6 -10
  80. package/examples/jsm/nodes/display/GaussianBlurNode.js +170 -0
  81. package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
  82. package/examples/jsm/nodes/display/PassNode.js +182 -0
  83. package/examples/jsm/nodes/display/ViewportDepthNode.js +31 -3
  84. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +2 -2
  85. package/examples/jsm/nodes/display/ViewportNode.js +17 -10
  86. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
  87. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
  88. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
  89. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
  90. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
  91. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
  92. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
  93. package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
  94. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +55 -6
  95. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
  96. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -18
  97. package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
  98. package/examples/jsm/nodes/lighting/LightsNode.js +80 -20
  99. package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
  100. package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
  101. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
  102. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +76 -77
  103. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
  104. package/examples/jsm/nodes/materials/Materials.js +1 -0
  105. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -0
  106. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +3 -3
  107. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
  108. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
  109. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
  110. package/examples/jsm/nodes/materials/NodeMaterial.js +82 -60
  111. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -10
  112. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
  113. package/examples/jsm/nodes/materialx/MaterialXNodes.js +10 -10
  114. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +128 -54
  115. package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
  116. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +24 -14
  117. package/examples/jsm/nodes/math/MathNode.js +2 -0
  118. package/examples/jsm/nodes/math/OperatorNode.js +24 -27
  119. package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -10
  120. package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
  121. package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
  122. package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
  123. package/examples/jsm/nodes/utils/JoinNode.js +11 -1
  124. package/examples/jsm/nodes/utils/LoopNode.js +36 -24
  125. package/examples/jsm/nodes/utils/RemapNode.js +2 -2
  126. package/examples/jsm/nodes/utils/SplitNode.js +10 -2
  127. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +3 -3
  128. package/examples/jsm/objects/InstancedPoints.js +21 -0
  129. package/examples/jsm/objects/Lensflare.js +20 -0
  130. package/examples/jsm/objects/QuadMesh.js +60 -0
  131. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
  132. package/examples/jsm/objects/Refractor.js +3 -0
  133. package/examples/jsm/objects/Sky.js +5 -3
  134. package/examples/jsm/objects/Water.js +5 -2
  135. package/examples/jsm/objects/Water2.js +3 -0
  136. package/examples/jsm/physics/AmmoPhysics.js +21 -0
  137. package/examples/jsm/physics/RapierPhysics.js +21 -0
  138. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  139. package/examples/jsm/postprocessing/GTAOPass.js +572 -0
  140. package/examples/jsm/postprocessing/LUTPass.js +2 -1
  141. package/examples/jsm/postprocessing/OutputPass.js +3 -0
  142. package/examples/jsm/postprocessing/Pass.js +14 -3
  143. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  144. package/examples/jsm/postprocessing/SMAAPass.js +0 -2
  145. package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
  146. package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
  147. package/examples/jsm/renderers/SVGRenderer.js +9 -6
  148. package/examples/jsm/renderers/common/Animation.js +10 -21
  149. package/examples/jsm/renderers/common/Backend.js +19 -3
  150. package/examples/jsm/renderers/common/Background.js +20 -22
  151. package/examples/jsm/renderers/common/Bindings.js +31 -22
  152. package/examples/jsm/renderers/common/ChainMap.js +3 -3
  153. package/examples/jsm/renderers/common/Color4.js +37 -0
  154. package/examples/jsm/renderers/common/Geometries.js +4 -4
  155. package/examples/jsm/renderers/common/Info.js +12 -2
  156. package/examples/jsm/renderers/common/Pipelines.js +3 -51
  157. package/examples/jsm/renderers/common/PostProcessing.js +25 -0
  158. package/examples/jsm/renderers/common/RenderContext.js +1 -1
  159. package/examples/jsm/renderers/common/RenderContexts.js +1 -1
  160. package/examples/jsm/renderers/common/RenderObject.js +21 -2
  161. package/examples/jsm/renderers/common/RenderObjects.js +5 -3
  162. package/examples/jsm/renderers/common/Renderer.js +137 -37
  163. package/examples/jsm/renderers/common/StorageTexture.js +1 -0
  164. package/examples/jsm/renderers/common/Textures.js +8 -37
  165. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +10 -2
  166. package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
  167. package/examples/jsm/renderers/common/nodes/Nodes.js +121 -19
  168. package/examples/jsm/renderers/webgl/WebGLBackend.js +366 -67
  169. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +183 -38
  170. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +92 -5
  171. package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
  172. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +11 -1
  173. package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
  174. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +71 -2
  175. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +42 -0
  176. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  177. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +33 -3
  178. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +4 -14
  179. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +188 -137
  180. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +1 -1
  181. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +241 -90
  182. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -10
  183. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +11 -3
  184. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +2 -3
  185. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +88 -6
  186. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
  187. package/examples/jsm/shaders/AfterimageShader.js +2 -0
  188. package/examples/jsm/shaders/BasicShader.js +2 -0
  189. package/examples/jsm/shaders/BlendShader.js +2 -0
  190. package/examples/jsm/shaders/BokehShader.js +2 -0
  191. package/examples/jsm/shaders/BokehShader2.js +4 -0
  192. package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
  193. package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
  194. package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
  195. package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
  196. package/examples/jsm/shaders/FXAAShader.js +135 -133
  197. package/examples/jsm/shaders/FilmShader.js +1 -1
  198. package/examples/jsm/shaders/FocusShader.js +2 -0
  199. package/examples/jsm/shaders/FreiChenShader.js +2 -0
  200. package/examples/jsm/shaders/GTAOShader.js +424 -0
  201. package/examples/jsm/shaders/GodRaysShader.js +8 -0
  202. package/examples/jsm/shaders/HalftoneShader.js +2 -0
  203. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
  204. package/examples/jsm/shaders/HueSaturationShader.js +2 -0
  205. package/examples/jsm/shaders/KaleidoShader.js +2 -0
  206. package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
  207. package/examples/jsm/shaders/LuminosityShader.js +2 -0
  208. package/examples/jsm/shaders/MMDToonShader.js +2 -0
  209. package/examples/jsm/shaders/MirrorShader.js +2 -0
  210. package/examples/jsm/shaders/NormalMapShader.js +2 -0
  211. package/examples/jsm/shaders/OutputShader.js +8 -5
  212. package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
  213. package/examples/jsm/shaders/SAOShader.js +7 -3
  214. package/examples/jsm/shaders/SMAAShader.js +6 -0
  215. package/examples/jsm/shaders/SSAOShader.js +8 -3
  216. package/examples/jsm/shaders/SSRShader.js +6 -0
  217. package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
  218. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
  219. package/examples/jsm/shaders/TechnicolorShader.js +2 -0
  220. package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
  221. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
  222. package/examples/jsm/shaders/VelocityShader.js +2 -0
  223. package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
  224. package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
  225. package/examples/jsm/transpiler/AST.js +270 -0
  226. package/examples/jsm/transpiler/GLSLDecoder.js +941 -0
  227. package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
  228. package/examples/jsm/transpiler/TSLEncoder.js +715 -0
  229. package/examples/jsm/transpiler/Transpiler.js +18 -0
  230. package/examples/jsm/utils/SortUtils.js +158 -0
  231. package/examples/jsm/utils/TextureUtils.js +33 -21
  232. package/examples/jsm/webxr/ARButton.js +14 -0
  233. package/examples/jsm/webxr/VRButton.js +24 -9
  234. package/examples/jsm/webxr/XRButton.js +27 -11
  235. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  236. package/package.json +8 -6
  237. package/src/Three.js +1 -0
  238. package/src/constants.js +8 -1
  239. package/src/core/BufferAttribute.js +21 -2
  240. package/src/core/InterleavedBuffer.js +21 -1
  241. package/src/core/Object3D.js +60 -12
  242. package/src/core/UniformsGroup.js +7 -1
  243. package/src/extras/PMREMGenerator.js +7 -1
  244. package/src/extras/curves/LineCurve3.js +4 -0
  245. package/src/loaders/AudioLoader.js +1 -1
  246. package/src/loaders/BufferGeometryLoader.js +0 -7
  247. package/src/loaders/ImageBitmapLoader.js +25 -1
  248. package/src/loaders/MaterialLoader.js +10 -2
  249. package/src/loaders/ObjectLoader.js +49 -0
  250. package/src/materials/Material.js +27 -13
  251. package/src/materials/ShaderMaterial.js +2 -1
  252. package/src/math/Box3.js +35 -18
  253. package/src/math/ColorManagement.js +0 -16
  254. package/src/math/Quaternion.js +5 -4
  255. package/src/math/Sphere.js +2 -0
  256. package/src/math/Triangle.js +17 -5
  257. package/src/math/Vector3.js +11 -12
  258. package/src/objects/BatchedMesh.js +1020 -0
  259. package/src/objects/Skeleton.js +1 -3
  260. package/src/objects/SkinnedMesh.js +6 -7
  261. package/src/renderers/WebGL3DRenderTarget.js +2 -2
  262. package/src/renderers/WebGLArrayRenderTarget.js +2 -2
  263. package/src/renderers/WebGLRenderer.js +165 -43
  264. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
  265. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
  266. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  267. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
  268. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -5
  269. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +31 -4
  270. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  271. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +9 -4
  272. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
  273. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +6 -0
  274. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +9 -17
  275. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +84 -0
  276. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +6 -0
  277. package/src/renderers/shaders/ShaderChunk.js +4 -0
  278. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  279. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  280. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -0
  281. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
  282. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +3 -0
  283. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +2 -0
  284. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
  285. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -2
  286. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -0
  287. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +3 -0
  288. package/src/renderers/webgl/WebGLAttributes.js +39 -5
  289. package/src/renderers/webgl/WebGLBufferRenderer.js +31 -0
  290. package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
  291. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  292. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +31 -0
  293. package/src/renderers/webgl/WebGLLights.js +11 -2
  294. package/src/renderers/webgl/WebGLProgram.js +100 -51
  295. package/src/renderers/webgl/WebGLPrograms.js +8 -0
  296. package/src/renderers/webgl/WebGLShadowMap.js +35 -0
  297. package/src/renderers/webgl/WebGLState.js +25 -4
  298. package/src/renderers/webgl/WebGLTextures.js +7 -11
  299. package/src/renderers/webgl/WebGLUniforms.js +11 -1
  300. package/src/renderers/webgl/WebGLUniformsGroups.js +72 -93
  301. package/src/renderers/webxr/WebXRManager.js +16 -0
  302. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
  303. package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
@@ -12,6 +12,8 @@ import {
12
12
 
13
13
  const FXAAShader = {
14
14
 
15
+ name: 'FXAAShader',
16
+
15
17
  uniforms: {
16
18
 
17
19
  'tDiffuse': { value: null },
@@ -30,52 +32,52 @@ const FXAAShader = {
30
32
 
31
33
  }`,
32
34
 
33
- fragmentShader: `
34
- precision highp float;
35
-
36
- uniform sampler2D tDiffuse;
37
-
38
- uniform vec2 resolution;
39
-
40
- varying vec2 vUv;
41
-
42
- // FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)
43
-
44
- //----------------------------------------------------------------------------------
45
- // File: es3-kepler\FXAA\assets\shaders/FXAA_DefaultES.frag
46
- // SDK Version: v3.00
47
- // Email: gameworks@nvidia.com
48
- // Site: http://developer.nvidia.com/
49
- //
50
- // Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
51
- //
52
- // Redistribution and use in source and binary forms, with or without
53
- // modification, are permitted provided that the following conditions
54
- // are met:
55
- // * Redistributions of source code must retain the above copyright
56
- // notice, this list of conditions and the following disclaimer.
57
- // * Redistributions in binary form must reproduce the above copyright
58
- // notice, this list of conditions and the following disclaimer in the
59
- // documentation and/or other materials provided with the distribution.
60
- // * Neither the name of NVIDIA CORPORATION nor the names of its
61
- // contributors may be used to endorse or promote products derived
62
- // from this software without specific prior written permission.
63
- //
64
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
65
- // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
66
- // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
67
- // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
68
- // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
69
- // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
70
- // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
71
- // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
72
- // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
73
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
74
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
75
- //
76
- //----------------------------------------------------------------------------------
77
-
78
- #ifndef FXAA_DISCARD
35
+ fragmentShader: /* glsl */`
36
+ precision highp float;
37
+
38
+ uniform sampler2D tDiffuse;
39
+
40
+ uniform vec2 resolution;
41
+
42
+ varying vec2 vUv;
43
+
44
+ // FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)
45
+
46
+ //----------------------------------------------------------------------------------
47
+ // File: es3-kepler\FXAA\assets\shaders/FXAA_DefaultES.frag
48
+ // SDK Version: v3.00
49
+ // Email: gameworks@nvidia.com
50
+ // Site: http://developer.nvidia.com/
51
+ //
52
+ // Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
53
+ //
54
+ // Redistribution and use in source and binary forms, with or without
55
+ // modification, are permitted provided that the following conditions
56
+ // are met:
57
+ // * Redistributions of source code must retain the above copyright
58
+ // notice, this list of conditions and the following disclaimer.
59
+ // * Redistributions in binary form must reproduce the above copyright
60
+ // notice, this list of conditions and the following disclaimer in the
61
+ // documentation and/or other materials provided with the distribution.
62
+ // * Neither the name of NVIDIA CORPORATION nor the names of its
63
+ // contributors may be used to endorse or promote products derived
64
+ // from this software without specific prior written permission.
65
+ //
66
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
67
+ // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
68
+ // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
69
+ // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
70
+ // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
71
+ // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
72
+ // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
73
+ // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
74
+ // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
75
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
76
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
77
+ //
78
+ //----------------------------------------------------------------------------------
79
+
80
+ #ifndef FXAA_DISCARD
79
81
  //
80
82
  // Only valid for PC OpenGL currently.
81
83
  // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
@@ -85,35 +87,35 @@ const FXAAShader = {
85
87
  // 0 = Return unchanged color on pixels which don't need AA.
86
88
  //
87
89
  #define FXAA_DISCARD 0
88
- #endif
90
+ #endif
89
91
 
90
- /*--------------------------------------------------------------------------*/
91
- #define FxaaTexTop(t, p) texture2D(t, p, -100.0)
92
- #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)
93
- /*--------------------------------------------------------------------------*/
92
+ /*--------------------------------------------------------------------------*/
93
+ #define FxaaTexTop(t, p) texture2D(t, p, -100.0)
94
+ #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)
95
+ /*--------------------------------------------------------------------------*/
94
96
 
95
- #define NUM_SAMPLES 5
97
+ #define NUM_SAMPLES 5
96
98
 
97
- // assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha
98
- float contrast( vec4 a, vec4 b ) {
99
+ // assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha
100
+ float contrast( vec4 a, vec4 b ) {
99
101
  vec4 diff = abs( a - b );
100
102
  return max( max( max( diff.r, diff.g ), diff.b ), diff.a );
101
- }
103
+ }
102
104
 
103
- /*============================================================================
105
+ /*============================================================================
104
106
 
105
107
  FXAA3 QUALITY - PC
106
108
 
107
- ============================================================================*/
109
+ ============================================================================*/
108
110
 
109
- /*--------------------------------------------------------------------------*/
110
- vec4 FxaaPixelShader(
111
+ /*--------------------------------------------------------------------------*/
112
+ vec4 FxaaPixelShader(
111
113
  vec2 posM,
112
114
  sampler2D tex,
113
115
  vec2 fxaaQualityRcpFrame,
114
116
  float fxaaQualityEdgeThreshold,
115
117
  float fxaaQualityinvEdgeThreshold
116
- ) {
118
+ ) {
117
119
  vec4 rgbaM = FxaaTexTop(tex, posM);
118
120
  vec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);
119
121
  vec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);
@@ -134,9 +136,9 @@ const FXAAShader = {
134
136
  // . 0 .
135
137
 
136
138
  #if (FXAA_DISCARD == 1)
137
- if(earlyExit) FxaaDiscard;
139
+ if(earlyExit) FxaaDiscard;
138
140
  #else
139
- if(earlyExit) return rgbaM;
141
+ if(earlyExit) return rgbaM;
140
142
  #endif
141
143
 
142
144
  float contrastN = contrast( rgbaM, rgbaN );
@@ -154,46 +156,46 @@ const FXAAShader = {
154
156
 
155
157
  // 45 deg edge detection and corners of objects, aka V/H contrast is too similar
156
158
  if( abs( relativeVContrast ) < .3 ) {
157
- // locate the edge
158
- vec2 dirToEdge;
159
- dirToEdge.x = contrastE > contrastW ? 1. : -1.;
160
- dirToEdge.y = contrastS > contrastN ? 1. : -1.;
161
- // . 2 . . 1 .
162
- // 1 0 2 ~= 0 0 1
163
- // . 1 . . 0 .
164
-
165
- // tap 2 pixels and see which ones are "outside" the edge, to
166
- // determine if the edge is vertical or horizontal
167
-
168
- vec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);
169
- float matchAlongH = contrast( rgbaM, rgbaAlongH );
170
- // . 1 .
159
+ // locate the edge
160
+ vec2 dirToEdge;
161
+ dirToEdge.x = contrastE > contrastW ? 1. : -1.;
162
+ dirToEdge.y = contrastS > contrastN ? 1. : -1.;
163
+ // . 2 . . 1 .
164
+ // 1 0 2 ~= 0 0 1
165
+ // . 1 . . 0 .
166
+
167
+ // tap 2 pixels and see which ones are "outside" the edge, to
168
+ // determine if the edge is vertical or horizontal
169
+
170
+ vec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);
171
+ float matchAlongH = contrast( rgbaM, rgbaAlongH );
172
+ // . 1 .
173
+ // 0 0 1
174
+ // . 0 H
175
+
176
+ vec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);
177
+ float matchAlongV = contrast( rgbaM, rgbaAlongV );
178
+ // V 1 .
179
+ // 0 0 1
180
+ // . 0 .
181
+
182
+ relativeVContrast = matchAlongV - matchAlongH;
183
+ relativeVContrast *= fxaaQualityinvEdgeThreshold;
184
+
185
+ if( abs( relativeVContrast ) < .3 ) { // 45 deg edge
186
+ // 1 1 .
171
187
  // 0 0 1
172
- // . 0 H
188
+ // . 0 1
173
189
 
174
- vec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);
175
- float matchAlongV = contrast( rgbaM, rgbaAlongV );
176
- // V 1 .
177
- // 0 0 1
178
- // . 0 .
179
-
180
- relativeVContrast = matchAlongV - matchAlongH;
181
- relativeVContrast *= fxaaQualityinvEdgeThreshold;
182
-
183
- if( abs( relativeVContrast ) < .3 ) { // 45 deg edge
184
- // 1 1 .
185
- // 0 0 1
186
- // . 0 1
190
+ // do a simple blur
191
+ return mix(
192
+ rgbaM,
193
+ (rgbaN + rgbaS + rgbaE + rgbaW) * .25,
194
+ .4
195
+ );
196
+ }
187
197
 
188
- // do a simple blur
189
- return mix(
190
- rgbaM,
191
- (rgbaN + rgbaS + rgbaE + rgbaW) * .25,
192
- .4
193
- );
194
- }
195
-
196
- horzSpan = relativeVContrast > 0.;
198
+ horzSpan = relativeVContrast > 0.;
197
199
  }
198
200
 
199
201
  if(!horzSpan) rgbaN = rgbaW;
@@ -222,35 +224,35 @@ const FXAAShader = {
222
224
  int iterationsUsedN = 0;
223
225
  int iterationsUsedP = 0;
224
226
  for( int i = 0; i < NUM_SAMPLES; i++ ) {
225
- iterationsUsed = i;
226
-
227
- float increment = float(i + 1);
228
-
229
- if(!doneN) {
230
- nDist += increment;
231
- posN = posM + offNP * nDist;
232
- vec4 rgbaEndN = FxaaTexTop(tex, posN.xy);
233
- doneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );
234
- iterationsUsedN = i;
235
- }
236
-
237
- if(!doneP) {
238
- pDist += increment;
239
- posP = posM - offNP * pDist;
240
- vec4 rgbaEndP = FxaaTexTop(tex, posP.xy);
241
- doneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );
242
- iterationsUsedP = i;
243
- }
244
-
245
- if(doneN || doneP) break;
227
+ iterationsUsed = i;
228
+
229
+ float increment = float(i + 1);
230
+
231
+ if(!doneN) {
232
+ nDist += increment;
233
+ posN = posM + offNP * nDist;
234
+ vec4 rgbaEndN = FxaaTexTop(tex, posN.xy);
235
+ doneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );
236
+ iterationsUsedN = i;
237
+ }
238
+
239
+ if(!doneP) {
240
+ pDist += increment;
241
+ posP = posM - offNP * pDist;
242
+ vec4 rgbaEndP = FxaaTexTop(tex, posP.xy);
243
+ doneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );
244
+ iterationsUsedP = i;
245
+ }
246
+
247
+ if(doneN || doneP) break;
246
248
  }
247
249
 
248
250
 
249
251
  if ( !doneP && !doneN ) return rgbaM; // failed to find end of edge
250
252
 
251
253
  float dist = min(
252
- doneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,
253
- doneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.
254
+ doneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,
255
+ doneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.
254
256
  );
255
257
 
256
258
  // hacky way of reduces blurriness of mostly diagonal edges
@@ -260,25 +262,25 @@ const FXAAShader = {
260
262
  dist = 1. - dist;
261
263
 
262
264
  return mix(
263
- rgbaM,
264
- rgbaN,
265
- dist * .5
265
+ rgbaM,
266
+ rgbaN,
267
+ dist * .5
266
268
  );
267
- }
269
+ }
268
270
 
269
- void main() {
271
+ void main() {
270
272
  const float edgeDetectionQuality = .2;
271
273
  const float invEdgeDetectionQuality = 1. / edgeDetectionQuality;
272
274
 
273
275
  gl_FragColor = FxaaPixelShader(
274
- vUv,
275
- tDiffuse,
276
- resolution,
277
- edgeDetectionQuality, // [0,1] contrast needed, otherwise early discard
278
- invEdgeDetectionQuality
276
+ vUv,
277
+ tDiffuse,
278
+ resolution,
279
+ edgeDetectionQuality, // [0,1] contrast needed, otherwise early discard
280
+ invEdgeDetectionQuality
279
281
  );
280
282
 
281
- }
283
+ }
282
284
  `
283
285
 
284
286
  };
@@ -38,7 +38,7 @@ const FilmShader = {
38
38
 
39
39
  vec4 base = texture2D( tDiffuse, vUv );
40
40
 
41
- float noise = rand( vUv + time );
41
+ float noise = rand( fract( vUv + time ) );
42
42
 
43
43
  vec3 color = base.rgb + base.rgb * clamp( 0.1 + noise, 0.0, 1.0 );
44
44
 
@@ -6,6 +6,8 @@
6
6
 
7
7
  const FocusShader = {
8
8
 
9
+ name: 'FocusShader',
10
+
9
11
  uniforms: {
10
12
 
11
13
  'tDiffuse': { value: null },
@@ -11,6 +11,8 @@ import {
11
11
 
12
12
  const FreiChenShader = {
13
13
 
14
+ name: 'FreiChenShader',
15
+
14
16
  uniforms: {
15
17
 
16
18
  'tDiffuse': { value: null },