on master help sign in
unsafe coerce GLSL shaders - for eDSL writers!
da47a7fJohn P Mayer Jr
libraries/Graphics/WebGL.elm+3
@@ -29,6 +29,9 @@ import Http (Response)
29import Native.Graphics.WebGL
29import Native.Graphics.WebGL
30import Signal (Signal)
30import Signal (Signal)
31
31
32+unsafeCoerceGLSL : String -> Shader attr unif vary
33+unsafeCoerceGLSL = Native.Graphics.WebGL.unsafeCoerceGLSL
34+
32type Triangle a = (a,a,a)
35type Triangle a = (a,a,a)
33
36
34mapTriangle : (a -> b) -> Triangle a -> Triangle b
37mapTriangle : (a -> b) -> Triangle a -> Triangle b
libraries/Native/Graphics/WebGL.js+7−2
@@ -17,6 +17,10 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
17 var Signal = Elm.Signal.make(elm);
17 var Signal = Elm.Signal.make(elm);
18 var Tuple2 = Utils.Tuple2;
18 var Tuple2 = Utils.Tuple2;
19
19
20+ function unsafeCoerceGLSL(src) {
21+ return { src : src };
22+ }
23+
20 function loadTex(source) {
24 function loadTex(source) {
21
25
22 var response = Signal.constant(elm.Http.values.Waiting);
26 var response = Signal.constant(elm.Http.values.Waiting);
@@ -172,7 +176,7 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
172 var progid = m.vert.id + '#' + m.frag.id;
176 var progid = m.vert.id + '#' + m.frag.id;
173 program = model.cache.programs[progid];
177 program = model.cache.programs[progid];
174 }
178 }
175−
179+
176 if (!program) {
180 if (!program) {
177
181
178 var vshader = undefined;
182 var vshader = undefined;
@@ -181,7 +185,7 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
181 } else {
185 } else {
182 m.vert.id = Utils.guid();
186 m.vert.id = Utils.guid();
183 }
187 }
184−
188+
185 if (!vshader) {
189 if (!vshader) {
186 vshader = do_compile(gl, m.vert.src, gl.VERTEX_SHADER);
190 vshader = do_compile(gl, m.vert.src, gl.VERTEX_SHADER);
187 model.cache.shaders[m.vert.id] = vshader;
191 model.cache.shaders[m.vert.id] = vshader;
@@ -353,6 +357,7 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
353 }
357 }
354
358
355 return elm.Native.Graphics.WebGL.values = {
359 return elm.Native.Graphics.WebGL.values = {
360+ unsafeCoerceGLSL:unsafeCoerceGLSL,
356 loadTex:loadTex,
361 loadTex:loadTex,
357 model:F4(model),
362 model:F4(model),
358 webgl:F2(webgl)
363 webgl:F2(webgl)