texture_uniform = gl.getUniformLocation(program, "u_texture");
view_uniform = gl.getUniformLocation(program, "u_view");
world_uniform = gl.getUniformLocation(program, "u_world");
-
- compile_shader :: (source: str, shader_type: gl.GLenum) -> (gl.GLShader, bool) {
- shader := gl.createShader(shader_type);
- gl.shaderSource(shader, source);
- gl.compileShader(shader);
-
- success := true;
- if gl.getShaderParameter(shader, gl.COMPILE_STATUS) == 0 {
- println("Error compiling shader.");
- gl.printShaderInfoLog(shader);
- success = false;
- }
-
- return shader, success;
- }
-
- link_program :: (vertex_shader: gl.GLShader, fragment_shader: gl.GLShader) -> (gl.GLProgram, bool) {
- program := gl.createProgram();
- gl.attachShader(program, vertex_shader);
- gl.attachShader(program, fragment_shader);
- gl.linkProgram(program);
-
- success := true;
- if gl.getProgramParameter(program, gl.LINK_STATUS) == 0 {
- println("Error linking program.");
- gl.printProgramInfoLog(program);
- success = false;
- }
-
- return program, success;
- }
}
free :: (use shader: ^Shader) {
}
}
+compile_shader :: (source: str, shader_type: gl.GLenum) -> (gl.GLShader, bool) {
+ shader := gl.createShader(shader_type);
+ gl.shaderSource(shader, source);
+ gl.compileShader(shader);
+
+ success := true;
+ if gl.getShaderParameter(shader, gl.COMPILE_STATUS) == 0 {
+ println("Error compiling shader.");
+ gl.printShaderInfoLog(shader);
+ success = false;
+ }
+
+ return shader, success;
+}
+
+link_program :: (vertex_shader: gl.GLShader, fragment_shader: gl.GLShader) -> (gl.GLProgram, bool) {
+ program := gl.createProgram();
+ gl.attachShader(program, vertex_shader);
+ gl.attachShader(program, fragment_shader);
+ gl.linkProgram(program);
+
+ success := true;
+ if gl.getProgramParameter(program, gl.LINK_STATUS) == 0 {
+ println("Error linking program.");
+ gl.printProgramInfoLog(program);
+ success = false;
+ }
+
+ return program, success;
+}
\ No newline at end of file
uniform3i(loc, x, y, z) { gl.uniform3i(uniformlocs[loc], x, y, z); },
uniform4f(loc, x, y, z, w) { gl.uniform4f(uniformlocs[loc], x, y, z, w); },
uniform4i(loc, x, y, z, w) { gl.uniform4i(uniformlocs[loc], x, y, z, w); },
+ uniform1iv(loc, valueptr, valuelen) { gl.uniform1iv(uniformlocs[loc], new Int32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen)); },
+ uniform1fv(loc, valueptr, valuelen) { gl.uniform1fv(uniformlocs[loc], new Float32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen)); },
+ uniform2iv(loc, valueptr, valuelen) { gl.uniform2iv(uniformlocs[loc], new Int32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 2)); },
+ uniform2fv(loc, valueptr, valuelen) { gl.uniform2fv(uniformlocs[loc], new Float32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 2)); },
+ uniform3iv(loc, valueptr, valuelen) { gl.uniform3iv(uniformlocs[loc], new Int32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 3)); },
+ uniform3fv(loc, valueptr, valuelen) { gl.uniform3fv(uniformlocs[loc], new Float32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 3)); },
+ uniform4iv(loc, valueptr, valuelen) { gl.uniform4iv(uniformlocs[loc], new Int32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 4)); },
+ uniform4fv(loc, valueptr, valuelen) { gl.uniform4fv(uniformlocs[loc], new Float32Array(window.ONYX_MEMORY.buffer, valueptr, valuelen * 4)); },
uniformMatrix2(loc, transpose, valueptr) {
const data = new Float32Array(window.ONYX_MEMORY.buffer, valueptr, 4);
gl.uniformMatrix2fv(uniformlocs[loc], transpose, data);
uniform3i :: (loc: GLUniformLocation, x: GLint, y: GLint, z: GLint) -> void #foreign "gl" "uniform3i" ---
uniform4f :: (loc: GLUniformLocation, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> void #foreign "gl" "uniform4f" ---
uniform4i :: (loc: GLUniformLocation, x: GLint, y: GLint, z: GLint, w: GLint) -> void #foreign "gl" "uniform4i" ---
+uniform1iv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform1iv" ---
+uniform1fv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform1fv" ---
+uniform2iv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform2iv" ---
+uniform2fv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform2fv" ---
+uniform3iv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform3iv" ---
+uniform3fv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform3fv" ---
+uniform4iv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform4iv" ---
+uniform4fv :: (loc: GLUniformLocation, v: [] void) -> void #foreign "gl" "uniform4fv" ---
uniformMatrix2 :: (loc: GLUniformLocation, transpose: GLboolean, value: GLMat2) -> void #foreign "gl" "uniformMatrix2" ---
uniformMatrix3 :: (loc: GLUniformLocation, transpose: GLboolean, value: GLMat3) -> void #foreign "gl" "uniformMatrix3" ---
uniformMatrix4 :: (loc: GLUniformLocation, transpose: GLboolean, value: GLMat4) -> void #foreign "gl" "uniformMatrix4" ---
bh_buffer_append(&vec_buff, leb, leb_len);
bh_arr_each(WasmDatum, datum, module->data) {
- if (datum->data == NULL) continue;
+ assert(datum->data != NULL);
i32 memory_flags = 0x00;
if (context.options->use_multi_threading) memory_flags |= 0x01;