@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
2 lines (1 loc) • 1.22 kB
JavaScript
export default "precision highp float;\nprecision highp sampler2D;\n\nuniform vec2 tSize;\nuniform float order;\nuniform sampler2D tOriginal;\nuniform sampler2D tPrevious0;\nuniform sampler2D tPrevious1;\nuniform sampler2D tPosition0;\nuniform sampler2D tPosition1;\nuniform sampler2D tViscositySpring;\nuniform float time;\nuniform float timeDelta;\nuniform float viscosity;\nuniform float spring;\n\n// INSERT DEFINE\n\n// *** ADD COMMON ***\n\nvoid main() {\n\n vec2 particleUv = gl_FragCoord.xy / tSize.xy;\n\n vec3 original = texture2D( tOriginal, particleUv ).xyz;\n vec3 previous = ( texture2D( tPrevious0, particleUv ).xyz + texture2D( tPrevious1, particleUv ).xyz ) / 1024.0;\n vec3 position = ( texture2D( tPosition0, particleUv ).xyz + texture2D( tPosition1, particleUv ).xyz ) / 1024.0;\n vec3 viscositySpring = texture2D( tViscositySpring, particleUv ).xyz;\n float viscosityMult = viscosity * viscositySpring.x;\n float springMult = spring * viscositySpring.y;\n\n // INSERT BODY\n\n vec3 offset = ( original - position ) * timeDelta * springMult;\n vec3 disp = ( position - previous ) * ( 1.0 - viscosityMult ) + position;\n\n gl_FragColor = vec4( unpackPosition( disp + offset, order ), 1.0 );\n\n}\n";