Skip to content
Snippets Groups Projects
index.html 3.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • amandaghassaei's avatar
    amandaghassaei committed
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Fluid Simulation</title>
    
        <link rel="stylesheet" type="text/css" href="dependencies/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="dependencies/flat-ui.min.css">
        <link rel="stylesheet" type="text/css" href="main.css">
    
        <script id="2d-vertex-shader" type="x-shader/x-vertex">
    
            attribute vec2 a_position;
    
            void main() {
               gl_Position = vec4(a_position, 0, 1);
            }
        </script>
    
        <script id="2d-render-shader" type="x-shader/x-fragment">
            precision mediump float;
    
            uniform sampler2D u_image;
            uniform vec2 u_textureSize;
    
            const float COLOR_MIN = 0.2, COLOR_MAX = 0.4;
    
            void main() {
                float v = (COLOR_MAX - texture2D(u_image, gl_FragCoord.xy / u_textureSize)).y / (COLOR_MAX - COLOR_MIN);
                gl_FragColor = vec4(v, v, v, 1);
            }
        </script>
    
        <script id="2d-fragment-shader" type="x-shader/x-fragment">
            precision mediump float;
            #define M_PI 3.1415926535897932384626433832795
    
            //texture array
            uniform sampler2D u_image;//u, v, --, -- = r, g, b, a
    
            uniform vec2 u_textureSize;
    
            uniform vec2 u_mouseCoord;
            uniform float u_mouseEnable;
    
    	    const float dt = 1.0;
    
            void main() {
    
                vec2 fragCoord = gl_FragCoord.xy;
    
                vec2 currentState = texture2D(u_image, fragCoord/u_textureSize).xy;
                float u = currentState.x;
                float v = currentState.y;
    
                vec2 n = texture2D(u_image, (fragCoord + vec2(0.0, 1.0))/u_textureSize).xy;//north
                vec2 s = texture2D(u_image, (fragCoord + vec2(0.0, -1.0))/u_textureSize).xy;//south
                vec2 e = texture2D(u_image, (fragCoord + vec2(-1.0, 0.0))/u_textureSize).xy;//east
                vec2 w = texture2D(u_image, (fragCoord + vec2(1.0, 0.0))/u_textureSize).xy;//west
    
                if (u_mouseEnable == 1.0){
                    vec2 pxDistFromMouse = (fragCoord - u_mouseCoord)*(fragCoord - u_mouseCoord);
                    float tol = 10.0;
                    if (length(pxDistFromMouse)<tol){
                        gl_FragColor = vec4(0.5, 0.35, 0, 1);
                        return;
                    }
                }
    
                gl_FragColor = vec4(0,0, 0, 1);
            }
        </script>
    
        <script type="text/javascript" src="dependencies/jquery-3.1.0.min.js"></script>
        <script type="text/javascript" src="dependencies/flat-ui.min.js"></script>
    
        <script type="text/javascript" src="GlBoilerplate.js"></script>
        <script type="text/javascript" src="main.js"></script>
    </head>
    <body>
    
    <canvas id="glcanvas"></canvas>
    
    <a href="#" id="about">?</a>
    
    <div class="modal fade" id="aboutModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-body">
                    <b>Fluid Simulation Shader</b><br/><br/>
                    <br/><br/>
                    By <a href="http://www.amandaghassaei.com/" target="_blank">Amanda Ghassaei</a>, code on <a href="https://github.com/amandaghassaei/ReactionDiffusionShader" target="_blank">Github</a>.
                    <br/><br/>
                </div>
            </div>
        </div>
    </div>
    
    </body>
    </html>