49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
import { Shader } from "./lib/shader.js";
|
|
import { BasicPlane } from "./lib/basic-plane.js";
|
|
import { App } from "./lib/app.js";
|
|
|
|
const app = new App({ fov: 20 });
|
|
const gl = app.gl;
|
|
|
|
const shader = new Shader(app)
|
|
.attach(
|
|
gl.VERTEX_SHADER,
|
|
`
|
|
attribute vec4 aVertexPosition;
|
|
attribute vec2 aTextureCoord;
|
|
|
|
uniform mat4 uModelViewMatrix;
|
|
uniform mat4 uProjectionMatrix;
|
|
|
|
varying highp vec2 vTextureCoord;
|
|
|
|
void main() {
|
|
gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;
|
|
vTextureCoord = aTextureCoord;
|
|
}
|
|
`
|
|
)
|
|
.attach(
|
|
gl.FRAGMENT_SHADER,
|
|
`
|
|
uniform lowp float uTime;
|
|
uniform lowp float uSinTime;
|
|
uniform lowp float uCosTime;
|
|
|
|
varying highp vec2 vTextureCoord;
|
|
|
|
void main() {
|
|
lowp float slowedSinTime = sin(uTime*0.001)*0.5+0.5;
|
|
lowp float slowedCosTime = cos(uTime*0.005)*0.5+0.5;
|
|
|
|
gl_FragColor = vec4(vTextureCoord.x * 0.5 - slowedSinTime, vTextureCoord.y, vTextureCoord.y * 0.5 + slowedSinTime, 1.0);
|
|
gl_FragColor = clamp(gl_FragColor, 0.0, 1.0);
|
|
}
|
|
`
|
|
)
|
|
.link();
|
|
|
|
const plane = new BasicPlane(app);
|
|
plane.attachShader(shader);
|
|
|
|
app.loop();
|