Learning-shader-passes-1.0.0

Developer
Size
9,460 Kb
Views
14,168

How do I make an learning-shader-passes-1.0.0?

Trying to learn shader effects using multiple passescode for effect shaders taken from https://codepen.io/mittense/project/details/ARwvjL. What is a learning-shader-passes-1.0.0? How do you make a learning-shader-passes-1.0.0? This script and codes were developed by Not Important on 16 November 2022, Wednesday.

Learning-shader-passes-1.0.0 Previews

Learning-shader-passes-1.0.0 - Script Codes HTML Codes

<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>learning-shader-passes-1.0.0</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <div id="js-app"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.20.0/polyfill.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/86/three.min.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/292951/three.bas.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<!-- all of the following were taken from https://codepen.io/mittense/project/editor/ARwvjL/ -->
<script src="https://codepen.io/clindsey/pen/gxYmJd.js"></script> <!-- THREE.EffectComposer -->
<script src="https://codepen.io/clindsey/pen/eEOvwZ.js"></script> <!-- THREE.MaskPass -->
<script src="https://codepen.io/clindsey/pen/OjLper.js"></script> <!-- THREE.RenderPass -->
<script src="https://codepen.io/clindsey/pen/eEOvqZ.js"></script> <!-- THREE.ShaderPass -->
<script src="https://codepen.io/clindsey/pen/YxKZma.js"></script> <!-- THREE.UnrealBloomPass -->
<script src="https://codepen.io/clindsey/pen/NvKjKV.js"></script> <!-- THREE.ConvolutionShader -->
<script src="https://codepen.io/clindsey/pen/qXWmWX.js"></script> <!-- THREE.CopyShader -->
<script src="https://codepen.io/clindsey/pen/EvYmxW.js"></script> <!-- THREE.FXAAShader -->
<script src="https://codepen.io/clindsey/pen/dzbWyd.js"></script> <!-- THREE.FilmShader -->
<script src="https://codepen.io/clindsey/pen/OjLmJd.js"></script> <!-- THREE.LuminosityHighPassShader -->
<script>(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();document.body.appendChild(stats.dom);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='//rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()</script> <script src="js/index.js"></script>
</body>
</html>

Learning-shader-passes-1.0.0 - Script Codes CSS Codes

body { margin: 0; padding: 0; background-color: #000;
}
canvas { display: block; margin: 0 auto;
}

Learning-shader-passes-1.0.0 - Script Codes JS Codes

'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
setTimeout(function () { var flame = new Flame(30, 6); new Simulation('js-app', [flame]);
}, 0);
var Simulation = function () { function Simulation(domId, entities) { _classCallCheck(this, Simulation); var camera = this.createCamera(80, 0, 0, -47, window.innerWidth, window.innerHeight); camera.target = new THREE.Vector3(0, 0, 0); camera.lookAt(camera.target); var scene = new THREE.Scene(); this.createLights(scene); var renderer = this.createRenderer(0x666666); renderer.toneMapping = THREE.LinearToneMapping; renderer.shadowMap.enabled = true; var _createComposerAndEff = this.createComposerAndEffects(scene, camera, renderer); var composer = _createComposerAndEff.composer; var effects = _createComposerAndEff.effects; document.getElementById(domId).appendChild(renderer.domElement); var handleWindowResize = this.onWindowResize(camera, composer, renderer, effects); handleWindowResize(); window.addEventListener('resize', handleWindowResize, false); entities.map(function (e) { return scene.add(e); }); var controls = this.createControls(camera); this.animate(composer, renderer, scene, camera, controls, entities, +new Date()); } Simulation.prototype.createComposerAndEffects = function createComposerAndEffects(scene, camera, renderer) { var effects = {}; var renderScene = new THREE.RenderPass(scene, camera); effects.fxaa = new THREE.ShaderPass(THREE.FXAAShader); effects.fxaa.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight); effects.copy = new THREE.ShaderPass(THREE.CopyShader); effects.copy.renderToScreen = true; var strength = 0.5; var radius = 2.6; var threshold = 0.05; effects.bloom = new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold); var composer = new THREE.EffectComposer(renderer); composer.setSize(window.innerWidth, window.innerHeight); composer.addPass(renderScene); composer.addPass(effects.fxaa); composer.addPass(effects.bloom); composer.addPass(effects.copy); renderer.gammaInput = false; renderer.gammaOutput = true; return { composer: composer, effects: effects }; }; Simulation.prototype.createControls = function createControls(camera) { var controls = new THREE.OrbitControls(camera); controls.target = camera.target; controls.enableDamping = true; controls.dampingFactor = 0.1; controls.rotateSpeed = 0.1; return controls; }; Simulation.prototype.onWindowResize = function onWindowResize(camera, composer, renderer, effects) { return function (event) { var width = window.innerWidth; var height = window.innerHeight; camera.aspect = width / height; camera.updateProjectionMatrix(); renderer.setSize(width, height); composer.setSize(width, height); effects.fxaa.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight); }; }; Simulation.prototype.animate = function animate(composer, renderer, scene, camera, controls, entities, lastTime) { var _this = this; var currentTime = +new Date(); var timeDelta = currentTime - lastTime; entities.forEach(function (e) { return e.time += timeDelta / 1000; }); requestAnimationFrame(function () { _this.animate(composer, renderer, scene, camera, controls, entities, currentTime); }); controls.update(); composer.render(); }; Simulation.prototype.createCamera = function createCamera(fov) { var x = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var y = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; var z = arguments.length <= 3 || arguments[3] === undefined ? 0 : arguments[3]; var width = arguments[4]; var height = arguments[5]; var camera = new THREE.PerspectiveCamera(fov, width / height, 1, 1000); camera.position.x = x; camera.position.y = y; camera.position.z = z; return camera; }; Simulation.prototype.createLights = function createLights(scene) { var light = new THREE.AmbientLight('#f8845e', 1.5); scene.add(light); }; Simulation.prototype.createRenderer = function createRenderer() { var clearColor = arguments.length <= 0 || arguments[0] === undefined ? 0x000000 : arguments[0]; var renderer = new THREE.WebGLRenderer({ antialias: false, alpha: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.autoClear = true; renderer.setClearColor(clearColor, 0); return renderer; }; return Simulation;
}();
var Flame = function (_THREE$Mesh) { _inherits(Flame, _THREE$Mesh); Flame.createMaterial = function createMaterial(texture) { return new THREE.BAS.BasicAnimationMaterial({ shading: THREE.FlatShading, side: THREE.FrontSide, uniforms: { uTime: { value: 0 }, uScalingFactor: { value: 4.9 }, uFreqMin: { value: 0.62 }, uFreqMax: { value: 0.72 }, uNoiseAmplitude: { value: 1 }, uNoiseFrequency: { value: 0.08 }, uQWidth: { value: 0 }, uAnimation: { value: new THREE.Vector3(0, -3, 0.16) }, uColor1: { value: new THREE.Color(0xffffff) }, uColor2: { value: new THREE.Color(0xe5ff08) }, uColor3: { value: new THREE.Color(0x3ad439) }, uColor4: { value: new THREE.Color(0x326b39) } }, uniformValues: {}, varyingParameters: ['varying vec3 vFlameColor;'], vertexFunctions: ['\n vec3 mod289 (vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n vec4 mod289 (vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n vec4 permute (vec4 x) { return mod289(((x * 34.0) + 1.0) * x); }\n vec4 taylorInvSqrt (vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n ', '\n float snoise (vec3 v) {\n const vec2 C = vec2(1.0/6.0, 1.0/3.0);\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy)); // First corner\n vec3 x0 = v - i + dot(i, C.xxx);\n vec3 g = step(x0.yzx, x0.xyz); // Other corners\n vec3 l = 1.0 - g;\n vec3 i1 = min(g.xyz, l.zxy);\n vec3 i2 = max(g.xyz, l.zxy);\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n i = mod289(i); // Permutations\n vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_); // mod(j,N)\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n vec4 b0 = vec4(x.xy, y.xy);\n vec4 b1 = vec4(x.zw, y.zw);\n vec4 s0 = floor(b0) * 2.0 + 1.0;\n vec4 s1 = floor(b1) * 2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\n vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\n vec3 p0 = vec3(a0.xy, h.x);\n vec3 p1 = vec3(a0.zw, h.y);\n vec3 p2 = vec3(a1.xy, h.z);\n vec3 p3 = vec3(a1.zw, h.w); //Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w; // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3)));\n }\n ', '\n # define NOISE_STEPS 1\n float turbulence (vec3 position, float minFreq, float maxFreq, float qWidth) {\n float value = 0.0;\n float cutoff = clamp(0.5 / qWidth, 0.0, maxFreq);\n float fade;\n float fOut = minFreq;\n for (int i = NOISE_STEPS; i >= 0 ; i--) {\n if (fOut >= 0.5 * cutoff) break;\n fOut *= 2.0;\n value += abs(snoise(position * fOut)) / fOut;\n }\n fade = clamp(2.0 * (cutoff - fOut) / cutoff, 0.0, 1.0);\n value += fade * abs(snoise(position * fOut)) / fOut;\n return 1.0 - value;\n }\n '], vertexParameters: ['uniform float uScalingFactor;', 'uniform float uFreqMin;', 'uniform float uFreqMax;', 'uniform float uQWidth;', 'uniform float uTime;', 'uniform float uNoiseAmplitude;', 'uniform vec3 uAnimation;', 'uniform float uNoiseFrequency;', 'attribute vec3 aPosition;', 'uniform vec3 uColor1;', 'uniform vec3 uColor2;', 'uniform vec3 uColor3;', 'uniform vec3 uColor4;', '\n vec3 fireShade (float distance) {\n float c1 = saturate(distance * 5.0 + 0.5);\n float c2 = saturate(distance * 5.0);\n float c3 = saturate(distance * 3.4 - 0.5);\n vec3 a = mix(uColor1, uColor2, c1);\n vec3 b = mix(a, uColor3, c2);\n return mix(b, uColor4, c3);\n }\n '], vertexInit: [], vertexNormal: ['objectNormal += aPosition;'], vertexPosition: ['transformed += aPosition;', 'float noise = turbulence(transformed * uNoiseFrequency + uAnimation * uTime, uFreqMin, uFreqMax, uQWidth);', 'vFlameColor = fireShade(1.0 - saturate(abs(noise * uNoiseAmplitude)));', 'transformed *= 1.0 - saturate(abs(noise * (uNoiseAmplitude * (uNoiseFrequency * uScalingFactor))));'], vertexColor: [], fragmentFunctions: [], fragmentParameters: [], fragmentInit: [], fragmentMap: [], fragmentDiffuse: ['diffuseColor.rgb = vFlameColor;'] }); }; function Flame(radius, tesselation) { _classCallCheck(this, Flame); var model = new THREE.IcosahedronGeometry(radius, tesselation); var geometry = new THREE.BAS.ModelBufferGeometry(model); var material = Flame.createMaterial(); var _this2 = _possibleConstructorReturn(this, _THREE$Mesh.call(this, geometry, material)); _this2.castShadow = true; _this2.receiveShadow = true; return _this2; } _createClass(Flame, [{ key: 'time', get: function get() { return this.material.uniforms.uTime.value; }, set: function set(newTime) { this.material.uniforms.uTime.value = newTime; } }]); return Flame;
}(THREE.Mesh);
Learning-shader-passes-1.0.0 - Script Codes
Learning-shader-passes-1.0.0 - Script Codes
Home Page Home
Developer Not Important
Username clindsey
Uploaded November 16, 2022
Rating 4.5
Size 9,460 Kb
Views 14,168
Do you need developer help for Learning-shader-passes-1.0.0?

Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!

Not Important (clindsey) Script Codes
Create amazing blog posts with AI!

Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!