summaryrefslogtreecommitdiffstats
path: root/blockgame/shaders.js
diff options
context:
space:
mode:
Diffstat (limited to 'blockgame/shaders.js')
-rw-r--r--blockgame/shaders.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/blockgame/shaders.js b/blockgame/shaders.js
new file mode 100644
index 0000000..f89270a
--- /dev/null
+++ b/blockgame/shaders.js
@@ -0,0 +1,49 @@
+const vs_src = `
+ attribute vec4 position;
+
+ uniform mat4 mv_matrix;
+ uniform mat4 projection_matrix;
+
+ void main() {
+ gl_Position = projection_matrix * mv_matrix * position;
+ }
+`;
+
+const fs_src = `
+ void main() {
+ gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
+ }
+`;
+
+export function init(gl) {
+ const vshader = loadShader(gl, gl.VERTEX_SHADER, vs_src);
+ const fshader = loadShader(gl, gl.FRAGMENT_SHADER, fs_src);
+
+ const program = gl.createProgram();
+ gl.attachShader(program, vshader);
+ gl.attachShader(program, fshader);
+
+ gl.linkProgram(program);
+
+ if(!gl.getProgramParameter(program, gl.LINK_STATUS)) {
+ alert("Unable to initialize shader program: " + gl.getProgramInfoLog(program));
+ return null;
+ }
+
+ return program;
+}
+
+export function loadShader(gl, type, src){
+ const shader = gl.createShader(type)
+
+ gl.shaderSource(shader, src);
+ gl.compileShader(shader);
+
+ if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
+ alert('Failed to compile shader : ' + gl.getShaderInfoLog(shader));
+ gl.deleteShader(shader);
+ return null;
+ }
+
+ return shader;
+}