├── demos ├── iq-heart │ ├── README.md │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── Just-Draw-Simple-Line │ ├── README.md │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── Draw-Path-Line │ ├── images │ │ └── wechat.jpg │ └── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js ├── iq-eye │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── iq-palette │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── Animate-My-Logo │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── shader.js │ │ └── fragmentShader.glsl │ ├── js │ │ └── index.js │ └── index.html ├── Circle-Bubble-Up │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── Draw-Simple-Line │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── shader.js │ │ └── fragmentShader.glsl │ └── index.html ├── Line-Path-Style │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── index.html ├── iq-compositing │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── noise-value-2d │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── simple-value │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── shader.js │ │ └── fragmentShader.glsl │ ├── js │ │ └── index.js │ └── index.html ├── Animate-Circle-Swing │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── shader.js │ │ └── fragmentShader.glsl │ ├── README.md │ ├── js │ │ └── index.js │ └── index.html ├── Animate-Square-Swing │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── shader.js │ │ └── fragmentShader.glsl │ ├── js │ │ └── index.js │ └── index.html ├── BigWing-Road-Light │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── Clock-Line-Circle │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── index.html ├── Glow-Line-Volumetric │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── Glow-Line-With-Music │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── Perlin-Noise-Function │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── fbm-volumetric-clouds │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ ├── fragmentShader.glsl │ │ └── shader.js │ └── js │ │ ├── index.js │ │ └── shader.js ├── noise-sphere-moon │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ ├── js │ │ └── index.js │ └── index.html ├── polygon-ray-tracing │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── 2D-Value-Noise-Derivatives │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── 3D-Value-Noise-Derivatives │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── MonteCarlo-Method-Heart │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── Perlin-Noise-Fire-Ball │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── Pseudo-Random-Generate │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── RayMarching-Volumetric-FBM │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── 2D-Gradient-Noise-Derivatives │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── 3D-Noise-Analytical-Normals │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js ├── RayMarching-FBM-Glowing-Circle │ ├── studio │ │ ├── vertexShader.glsl │ │ ├── .eslintrc │ │ └── shader.js │ └── js │ │ └── index.js └── Space-Sky-PassEffect │ ├── studio │ ├── vertexShader.glsl │ ├── .eslintrc │ └── shader.js │ └── js │ └── index.js ├── .eslintignore ├── lib ├── three │ ├── src │ │ ├── renderers │ │ │ ├── shaders │ │ │ │ ├── ShaderChunk │ │ │ │ │ ├── begin_vertex.glsl │ │ │ │ │ ├── beginnormal_vertex.glsl │ │ │ │ │ ├── fog_vertex.glsl │ │ │ │ │ ├── color_vertex.glsl │ │ │ │ │ ├── encodings_fragment.glsl │ │ │ │ │ ├── color_fragment.glsl │ │ │ │ │ ├── color_pars_vertex.glsl │ │ │ │ │ ├── color_pars_fragment.glsl │ │ │ │ │ ├── fog_pars_vertex.glsl │ │ │ │ │ ├── map_pars_fragment.glsl │ │ │ │ │ ├── uv2_vertex.glsl │ │ │ │ │ ├── alphamap_pars_fragment.glsl │ │ │ │ │ ├── specularmap_pars_fragment.glsl │ │ │ │ │ ├── alphatest_fragment.glsl │ │ │ │ │ ├── emissivemap_pars_fragment.glsl │ │ │ │ │ ├── metalnessmap_pars_fragment.glsl │ │ │ │ │ ├── roughnessmap_pars_fragment.glsl │ │ │ │ │ ├── uv2_pars_fragment.glsl │ │ │ │ │ ├── alphamap_fragment.glsl │ │ │ │ │ ├── aomap_pars_fragment.glsl │ │ │ │ │ ├── dithering_fragment.glsl │ │ │ │ │ ├── map_particle_pars_fragment.glsl │ │ │ │ │ ├── lightmap_pars_fragment.glsl │ │ │ │ │ ├── project_vertex.glsl │ │ │ │ │ ├── tonemapping_fragment.glsl │ │ │ │ │ ├── uv2_pars_vertex.glsl │ │ │ │ │ ├── clipping_planes_pars_vertex.glsl │ │ │ │ │ ├── clipping_planes_vertex.glsl │ │ │ │ │ ├── defaultnormal_vertex.glsl │ │ │ │ │ ├── logdepthbuf_fragment.glsl │ │ │ │ │ ├── worldpos_vertex.glsl │ │ │ │ │ ├── map_fragment.glsl │ │ │ │ │ ├── displacementmap_pars_vertex.glsl │ │ │ │ │ ├── displacementmap_vertex.glsl │ │ │ │ │ ├── logdepthbuf_pars_vertex.glsl │ │ │ │ │ ├── logdepthbuf_pars_fragment.glsl │ │ │ │ │ ├── lightmap_fragment.glsl │ │ │ │ │ ├── lights_phong_fragment.glsl │ │ │ │ │ ├── map_particle_fragment.glsl │ │ │ │ │ ├── morphtarget_pars_vertex.glsl │ │ │ │ │ ├── premultiplied_alpha_fragment.glsl │ │ │ │ │ ├── clipping_planes_pars_fragment.glsl │ │ │ │ │ ├── skinbase_vertex.glsl │ │ │ │ │ ├── specularmap_fragment.glsl │ │ │ │ │ ├── emissivemap_fragment.glsl │ │ │ │ │ ├── uv_pars_fragment.glsl │ │ │ │ │ ├── envmap_pars_vertex.glsl │ │ │ │ │ ├── fog_pars_fragment.glsl │ │ │ │ │ ├── uv_vertex.glsl │ │ │ │ │ ├── uv_pars_vertex.glsl │ │ │ │ │ ├── metalnessmap_fragment.glsl │ │ │ │ │ ├── roughnessmap_fragment.glsl │ │ │ │ │ ├── logdepthbuf_vertex.glsl │ │ │ │ │ ├── fog_fragment.glsl │ │ │ │ │ ├── morphnormal_vertex.glsl │ │ │ │ │ ├── skinnormal_vertex.glsl │ │ │ │ │ ├── skinning_vertex.glsl │ │ │ │ │ ├── gradientmap_pars_fragment.glsl │ │ │ │ │ ├── aomap_fragment.glsl │ │ │ │ │ ├── clipping_planes_fragment.glsl │ │ │ │ │ ├── envmap_vertex.glsl │ │ │ │ │ ├── lights_physical_fragment.glsl │ │ │ │ │ ├── dithering_pars_fragment.glsl │ │ │ │ │ ├── envmap_pars_fragment.glsl │ │ │ │ │ ├── shadowmap_pars_vertex.glsl │ │ │ │ │ ├── morphtarget_vertex.glsl │ │ │ │ │ ├── normal_fragment.glsl │ │ │ │ │ ├── shadowmap_vertex.glsl │ │ │ │ │ └── normalmap_pars_fragment.glsl │ │ │ │ └── ShaderLib │ │ │ │ │ ├── equirect_vert.glsl │ │ │ │ │ ├── shadow_vert.glsl │ │ │ │ │ ├── cube_frag.glsl │ │ │ │ │ ├── cube_vert.glsl │ │ │ │ │ ├── shadow_frag.glsl │ │ │ │ │ ├── equirect_frag.glsl │ │ │ │ │ ├── linedashed_vert.glsl │ │ │ │ │ ├── normal_frag.glsl │ │ │ │ │ ├── points_vert.glsl │ │ │ │ │ ├── depth_vert.glsl │ │ │ │ │ ├── distanceRGBA_frag.glsl │ │ │ │ │ ├── distanceRGBA_vert.glsl │ │ │ │ │ ├── depth_frag.glsl │ │ │ │ │ ├── points_frag.glsl │ │ │ │ │ ├── linedashed_frag.glsl │ │ │ │ │ └── meshbasic_vert.glsl │ │ │ ├── WebGLRenderTargetCube.js │ │ │ └── webgl │ │ │ │ ├── WebGLProperties.js │ │ │ │ └── WebGLObjects.js │ │ ├── objects │ │ │ ├── Group.js │ │ │ ├── LineLoop.js │ │ │ ├── LineSegments.js │ │ │ └── Bone.js │ │ ├── audio │ │ │ ├── AudioContext.js │ │ │ └── AudioAnalyser.js │ │ ├── cameras │ │ │ └── ArrayCamera.js │ │ ├── core │ │ │ ├── Uniform.js │ │ │ ├── Layers.js │ │ │ ├── InstancedBufferAttribute.js │ │ │ ├── InstancedInterleavedBuffer.js │ │ │ └── InstancedBufferGeometry.js │ │ ├── extras │ │ │ ├── curves │ │ │ │ ├── ArcCurve.js │ │ │ │ └── Curves.js │ │ │ ├── objects │ │ │ │ └── ImmediateRenderObject.js │ │ │ └── SceneUtils.js │ │ ├── lights │ │ │ ├── AmbientLight.js │ │ │ ├── DirectionalLightShadow.js │ │ │ └── HemisphereLight.js │ │ ├── materials │ │ │ ├── RawShaderMaterial.js │ │ │ ├── ShadowMaterial.js │ │ │ ├── MeshToonMaterial.js │ │ │ └── Materials.js │ │ ├── textures │ │ │ ├── CanvasTexture.js │ │ │ ├── DataTexture.js │ │ │ ├── CompressedTexture.js │ │ │ └── CubeTexture.js │ │ ├── utils.js │ │ ├── loaders │ │ │ ├── Cache.js │ │ │ ├── LoaderUtils.js │ │ │ └── AudioLoader.js │ │ ├── scenes │ │ │ ├── FogExp2.js │ │ │ └── Fog.js │ │ ├── animation │ │ │ └── tracks │ │ │ │ ├── NumberKeyframeTrack.js │ │ │ │ ├── VectorKeyframeTrack.js │ │ │ │ ├── ColorKeyframeTrack.js │ │ │ │ └── StringKeyframeTrack.js │ │ └── math │ │ │ └── interpolants │ │ │ ├── DiscreteInterpolant.js │ │ │ └── LinearInterpolant.js │ ├── examples │ │ ├── fonts │ │ │ ├── LICENSE │ │ │ ├── README │ │ │ ├── ttf │ │ │ │ └── kenpixel.ttf │ │ │ └── droid │ │ │ │ └── README.txt │ │ └── js │ │ │ ├── loaders │ │ │ ├── draco │ │ │ │ └── draco_decoder.wasm │ │ │ ├── ctm │ │ │ │ ├── CTMWorker.js │ │ │ │ └── license │ │ │ │ │ └── OpenCTM.txt │ │ │ └── SVGLoader.js │ │ │ ├── objects │ │ │ └── ReflectorRTT.js │ │ │ ├── nodes │ │ │ ├── inputs │ │ │ │ ├── Matrix4Node.js │ │ │ │ ├── ColorNode.js │ │ │ │ ├── Vector2Node.js │ │ │ │ ├── Vector4Node.js │ │ │ │ ├── Vector3Node.js │ │ │ │ ├── FloatNode.js │ │ │ │ ├── IntNode.js │ │ │ │ └── ScreenNode.js │ │ │ ├── utils │ │ │ │ ├── TimerNode.js │ │ │ │ ├── NoiseNode.js │ │ │ │ ├── LuminanceNode.js │ │ │ │ └── ResolutionNode.js │ │ │ ├── materials │ │ │ │ ├── SpriteNodeMaterial.js │ │ │ │ ├── PhongNodeMaterial.js │ │ │ │ └── StandardNodeMaterial.js │ │ │ ├── VarNode.js │ │ │ ├── accessors │ │ │ │ ├── LightNode.js │ │ │ │ ├── UVNode.js │ │ │ │ ├── ScreenUVNode.js │ │ │ │ └── ColorsNode.js │ │ │ ├── RawNode.js │ │ │ └── postprocessing │ │ │ │ └── NodePass.js │ │ │ ├── PRNG.js │ │ │ ├── shaders │ │ │ ├── BasicShader.js │ │ │ ├── CopyShader.js │ │ │ ├── GammaCorrectionShader.js │ │ │ ├── LuminosityShader.js │ │ │ ├── ColorifyShader.js │ │ │ ├── UnpackDepthRGBAShader.js │ │ │ └── BlendShader.js │ │ │ └── modifiers │ │ │ └── ExplodeModifier.js │ └── bower.json ├── dat.gui │ ├── .babelrc │ ├── tmp │ │ ├── index.html │ │ ├── es6.js │ │ ├── webpack.config.js │ │ ├── common.js │ │ ├── rollup.config.js │ │ └── package.json │ ├── licenseBanner.txt │ ├── bower.json │ └── src │ │ └── dat │ │ ├── utils │ │ └── requestAnimationFrame.js │ │ └── gui │ │ └── saveDialogue.html.js ├── tofu.js │ └── src │ │ ├── postprocessing │ │ ├── ClearMaskPass.js │ │ └── Pass.js │ │ ├── utils │ │ └── Smooth.js │ │ ├── shader │ │ └── CopyShader.js │ │ └── extras │ │ └── panorama │ │ └── AnchorBase.js └── tofu.shaderprimer │ ├── CHANGELOG.md │ ├── README.md │ └── src │ └── index.js ├── doc ├── WORDS.md └── TASKLINE.md ├── .eslintrc ├── .editorconfig └── README.md /demos/iq-heart/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/** 2 | -------------------------------------------------------------------------------- /demos/Just-Draw-Simple-Line/README.md: -------------------------------------------------------------------------------- 1 | # draw a line 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/begin_vertex.glsl: -------------------------------------------------------------------------------- 1 | 2 | vec3 transformed = vec3( position ); 3 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl: -------------------------------------------------------------------------------- 1 | 2 | vec3 objectNormal = vec3( normal ); 3 | -------------------------------------------------------------------------------- /lib/dat.gui/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false 5 | }] 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/fog_vertex.glsl: -------------------------------------------------------------------------------- 1 | 2 | #ifdef USE_FOG 3 | fogDepth = -mvPosition.z; 4 | #endif -------------------------------------------------------------------------------- /lib/dat.gui/tmp/index.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib/three/examples/fonts/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonChen1982/shader-studio/HEAD/lib/three/examples/fonts/LICENSE -------------------------------------------------------------------------------- /lib/three/examples/fonts/README: -------------------------------------------------------------------------------- 1 | Use Facetype.js to generate typeface.json fonts. 2 | http://gero3.github.io/facetype.js/ 3 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_COLOR 2 | 3 | vColor.xyz = color.xyz; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/encodings_fragment.glsl: -------------------------------------------------------------------------------- 1 | gl_FragColor = linearToOutputTexel( gl_FragColor ); 2 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/color_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_COLOR 2 | 3 | diffuseColor.rgb *= vColor; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_COLOR 2 | 3 | varying vec3 vColor; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_COLOR 2 | 3 | varying vec3 vColor; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_FOG 2 | 3 | varying float fogDepth; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_MAP 2 | 3 | uniform sampler2D map; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /demos/Draw-Path-Line/images/wechat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonChen1982/shader-studio/HEAD/demos/Draw-Path-Line/images/wechat.jpg -------------------------------------------------------------------------------- /lib/dat.gui/tmp/es6.js: -------------------------------------------------------------------------------- 1 | import dat from 'dat.gui'; 2 | 3 | const gui = new dat.GUI(); 4 | gui.add({message: 'hello world'}, 'message'); 5 | -------------------------------------------------------------------------------- /lib/dat.gui/tmp/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: './es6.js', 3 | output: { 4 | filename: 'bundle.js' 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /lib/dat.gui/tmp/common.js: -------------------------------------------------------------------------------- 1 | const dat = require('dat.gui'); 2 | 3 | const gui = new dat.GUI(); 4 | gui.add({message: 'hello world'}, 'message'); 5 | -------------------------------------------------------------------------------- /lib/three/examples/fonts/ttf/kenpixel.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonChen1982/shader-studio/HEAD/lib/three/examples/fonts/ttf/kenpixel.ttf -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl: -------------------------------------------------------------------------------- 1 | #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) 2 | 3 | vUv2 = uv2; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_ALPHAMAP 2 | 3 | uniform sampler2D alphaMap; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_SPECULARMAP 2 | 3 | uniform sampler2D specularMap; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef ALPHATEST 2 | 3 | if ( diffuseColor.a < ALPHATEST ) discard; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_EMISSIVEMAP 2 | 3 | uniform sampler2D emissiveMap; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_METALNESSMAP 2 | 3 | uniform sampler2D metalnessMap; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_ROUGHNESSMAP 2 | 3 | uniform sampler2D roughnessMap; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) 2 | 3 | varying vec2 vUv2; 4 | 5 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_ALPHAMAP 2 | 3 | diffuseColor.a *= texture2D( alphaMap, vUv ).g; 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/examples/js/loaders/draco/draco_decoder.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonChen1982/shader-studio/HEAD/lib/three/examples/js/loaders/draco/draco_decoder.wasm -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_AOMAP 2 | 3 | uniform sampler2D aoMap; 4 | uniform float aoMapIntensity; 5 | 6 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl: -------------------------------------------------------------------------------- 1 | #if defined( DITHERING ) 2 | 3 | gl_FragColor.rgb = dithering( gl_FragColor.rgb ); 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_MAP 2 | 3 | uniform mat3 uvTransform; 4 | uniform sampler2D map; 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_LIGHTMAP 2 | 3 | uniform sampler2D lightMap; 4 | uniform float lightMapIntensity; 5 | 6 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/project_vertex.glsl: -------------------------------------------------------------------------------- 1 | vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 ); 2 | 3 | gl_Position = projectionMatrix * mvPosition; 4 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl: -------------------------------------------------------------------------------- 1 | #if defined( TONE_MAPPING ) 2 | 3 | gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) 2 | 3 | attribute vec2 uv2; 4 | varying vec2 vUv2; 5 | 6 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) 2 | varying vec3 vViewPosition; 3 | #endif 4 | -------------------------------------------------------------------------------- /demos/iq-eye/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl: -------------------------------------------------------------------------------- 1 | #if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) 2 | vViewPosition = - mvPosition.xyz; 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /demos/iq-heart/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/iq-palette/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Animate-My-Logo/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Circle-Bubble-Up/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Draw-Path-Line/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Draw-Simple-Line/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Line-Path-Style/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/iq-compositing/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/noise-value-2d/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/simple-value/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Animate-Circle-Swing/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Animate-Square-Swing/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/BigWing-Road-Light/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Clock-Line-Circle/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Glow-Line-Volumetric/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Glow-Line-With-Music/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Just-Draw-Simple-Line/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Perlin-Noise-Function/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/fbm-volumetric-clouds/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/noise-sphere-moon/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/polygon-ray-tracing/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl: -------------------------------------------------------------------------------- 1 | vec3 transformedNormal = normalMatrix * objectNormal; 2 | 3 | #ifdef FLIP_SIDED 4 | 5 | transformedNormal = - transformedNormal; 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl: -------------------------------------------------------------------------------- 1 | #if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) 2 | 3 | gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5; 4 | 5 | #endif -------------------------------------------------------------------------------- /demos/2D-Value-Noise-Derivatives/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/3D-Value-Noise-Derivatives/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/MonteCarlo-Method-Heart/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Perlin-Noise-Fire-Ball/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/Pseudo-Random-Generate/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/RayMarching-Volumetric-FBM/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/2D-Gradient-Noise-Derivatives/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/3D-Noise-Analytical-Normals/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /demos/RayMarching-FBM-Glowing-Circle/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | 4 | void main() { 5 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 6 | gl_Position = vPosition; 7 | } 8 | -------------------------------------------------------------------------------- /doc/WORDS.md: -------------------------------------------------------------------------------- 1 | - bilinear interpolation : 双线性差值 2 | - lattice:格子 3 | - variations: 差异、差距 4 | - density:密度、浓度 5 | - compact:紧凑、小巧轻量 6 | - pseudo-random:伪随机 7 | - deterministic:确定的 8 | - intuitively:直观的 9 | - seamless:无缝的 10 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl: -------------------------------------------------------------------------------- 1 | #if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) 2 | 3 | vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 ); 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_MAP 2 | 3 | vec4 texelColor = texture2D( map, vUv ); 4 | 5 | texelColor = mapTexelToLinear( texelColor ); 6 | diffuseColor *= texelColor; 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_DISPLACEMENTMAP 2 | 3 | uniform sampler2D displacementMap; 4 | uniform float displacementScale; 5 | uniform float displacementBias; 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "globals": { 7 | "RAF": true, 8 | "CAF": true 9 | }, 10 | "rules": { 11 | "no-bitwise": 0 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_DISPLACEMENTMAP 2 | 3 | transformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias ); 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_LOGDEPTHBUF 2 | 3 | #ifdef USE_LOGDEPTHBUF_EXT 4 | 5 | varying float vFragDepth; 6 | 7 | #endif 8 | 9 | uniform float logDepthBufFC; 10 | 11 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_LOGDEPTHBUF 2 | 3 | uniform float logDepthBufFC; 4 | 5 | #ifdef USE_LOGDEPTHBUF_EXT 6 | 7 | varying float vFragDepth; 8 | 9 | #endif 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /demos/Space-Sky-PassEffect/studio/vertexShader.glsl: -------------------------------------------------------------------------------- 1 | 2 | varying vec4 vPosition; 3 | varying vec2 vUv; 4 | 5 | void main() { 6 | vUv = uv; 7 | vPosition = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 8 | gl_Position = vPosition; 9 | } 10 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_LIGHTMAP 2 | 3 | reflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity; // factor of PI should not be present; included here to prevent breakage 4 | 5 | #endif 6 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl: -------------------------------------------------------------------------------- 1 | BlinnPhongMaterial material; 2 | material.diffuseColor = diffuseColor.rgb; 3 | material.specularColor = specular; 4 | material.specularShininess = shininess; 5 | material.specularStrength = specularStrength; 6 | -------------------------------------------------------------------------------- /demos/iq-eye/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/iq-heart/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_MAP 2 | 3 | vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; 4 | vec4 mapTexel = texture2D( map, uv ); 5 | diffuseColor *= mapTexelToLinear( mapTexel ); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /demos/Animate-Circle-Swing/README.md: -------------------------------------------------------------------------------- 1 | # jc-circle 2 | 3 | i was fascinated with pixel shader technology, after i read iq master's article, i decision start my pixel shader trip. 4 | 5 | let's getting start with bit snippet base knowledge. 6 | 7 | draw a very simple circle 8 | 9 | 10 | -------------------------------------------------------------------------------- /demos/Draw-Path-Line/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/iq-compositing/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/iq-palette/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/noise-value-2d/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/simple-value/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_MORPHTARGETS 2 | 3 | #ifndef USE_MORPHNORMALS 4 | 5 | uniform float morphTargetInfluences[ 8 ]; 6 | 7 | #else 8 | 9 | uniform float morphTargetInfluences[ 4 ]; 10 | 11 | #endif 12 | 13 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl: -------------------------------------------------------------------------------- 1 | #ifdef PREMULTIPLIED_ALPHA 2 | 3 | // Get get normal blending with premultipled, use with CustomBlending, OneFactor, OneMinusSrcAlphaFactor, AddEquation. 4 | gl_FragColor.rgb *= gl_FragColor.a; 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /demos/Animate-My-Logo/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/BigWing-Road-Light/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Circle-Bubble-Up/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Clock-Line-Circle/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Draw-Simple-Line/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Line-Path-Style/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/noise-sphere-moon/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/polygon-ray-tracing/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl: -------------------------------------------------------------------------------- 1 | #if NUM_CLIPPING_PLANES > 0 2 | 3 | #if ! defined( PHYSICAL ) && ! defined( PHONG ) 4 | varying vec3 vViewPosition; 5 | #endif 6 | 7 | uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /demos/Animate-Circle-Swing/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Animate-Square-Swing/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Glow-Line-Volumetric/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Glow-Line-With-Music/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Just-Draw-Simple-Line/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/MonteCarlo-Method-Heart/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Perlin-Noise-Fire-Ball/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Perlin-Noise-Function/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Pseudo-Random-Generate/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/Space-Sky-PassEffect/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/fbm-volumetric-clouds/studio/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "no-bitwise": 0 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl: -------------------------------------------------------------------------------- 1 | #ifdef USE_SKINNING 2 | 3 | mat4 boneMatX = getBoneMatrix( skinIndex.x ); 4 | mat4 boneMatY = getBoneMatrix( skinIndex.y ); 5 | mat4 boneMatZ = getBoneMatrix( skinIndex.z ); 6 | mat4 boneMatW = getBoneMatrix( skinIndex.w ); 7 | 8 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl: -------------------------------------------------------------------------------- 1 | float specularStrength; 2 | 3 | #ifdef USE_SPECULARMAP 4 | 5 | vec4 texelSpecular = texture2D( specularMap, vUv ); 6 | specularStrength = texelSpecular.r; 7 | 8 | #else 9 | 10 | specularStrength = 1.0; 11 | 12 | #endif -------------------------------------------------------------------------------- /lib/three/src/renderers/shaders/ShaderLib/equirect_vert.glsl: -------------------------------------------------------------------------------- 1 | varying vec3 vWorldPosition; 2 | 3 | #includeGUI's constructor:
4 |
5 |
6 |
7 | localStorage on exit.
11 |
12 | localStorage will
13 | override those passed to dat.GUI's constructor. This makes it
14 | easier to work incrementally, but localStorage is fragile,
15 | and your friends may not see the same values you do.
16 |
17 |