Added cwasm_vectors.c and cwasm_matrices.c. Vectors API is completely finished, Matrices API is partially finished. Added Clamp(value, min, max) macro to cwasm.h. Fixed types on jsGl functions that take vectors or matrices (and Arena*).

This commit is contained in:
2025-09-02 00:15:03 -07:00
parent b62f0d279b
commit 1a9775d670
7 changed files with 1072 additions and 45 deletions

View File

@@ -15,7 +15,7 @@ MAYBE_EXTERN_C bool jsGlGetParameterBool(GlEnum parameter);
MAYBE_EXTERN_C GlEnum jsGlGetParameterEnum(GlEnum parameter);
MAYBE_EXTERN_C int jsGlGetParameterInt(GlEnum parameter);
MAYBE_EXTERN_C float jsGlGetParameterFloat(GlEnum parameter);
MAYBE_EXTERN_C char* jsGlGetParameterString(void* arenaPntr, GlEnum parameter);
MAYBE_EXTERN_C char* jsGlGetParameterString(Arena* arenaPntr, GlEnum parameter);
MAYBE_EXTERN_C void jsGlEnable(GlEnum capability);
MAYBE_EXTERN_C void jsGlDisable(GlEnum capability);
MAYBE_EXTERN_C void jsGlBlendFunc(GlEnum srcFactor, GlEnum dstFactor);
@@ -44,12 +44,12 @@ MAYBE_EXTERN_C void jsGlShaderSource(GlId shaderId, int sourceLength, const char
MAYBE_EXTERN_C void jsGlCompileShader(GlId shaderId);
MAYBE_EXTERN_C bool jsGlGetShaderParameterBool(GlId shaderId, GlEnum parameter);
MAYBE_EXTERN_C int jsGlGetShaderParameterInt(GlId shaderId, GlEnum parameter);
MAYBE_EXTERN_C char* jsGlGetShaderInfoLog(void* arenaPntr, GlId shaderId);
MAYBE_EXTERN_C char* jsGlGetShaderInfoLog(Arena* arenaPntr, GlId shaderId);
MAYBE_EXTERN_C void jsGlDeleteProgram(GlId programId);
MAYBE_EXTERN_C GlId jsGlCreateProgram();
MAYBE_EXTERN_C void jsGlAttachShader(GlId programId, GlId shaderId);
MAYBE_EXTERN_C void jsGlLinkProgram(GlId programId);
MAYBE_EXTERN_C char* jsGlGetProgramInfoLog(void* arenaPntr, GlId programId);
MAYBE_EXTERN_C char* jsGlGetProgramInfoLog(Arena* arenaPntr, GlId programId);
MAYBE_EXTERN_C void jsGlUseProgram(GlId programId);
MAYBE_EXTERN_C bool jsGlGetProgramParameterBool(GlId programId, GlEnum parameter);
MAYBE_EXTERN_C int jsGlGetProgramParameterInt(GlId programId, GlEnum parameter);
@@ -64,19 +64,19 @@ MAYBE_EXTERN_C void jsGlUniform2f(GlId locationId, r32 value0, r32 value1);
MAYBE_EXTERN_C void jsGlUniform3f(GlId locationId, r32 value0, r32 value1, r32 value2);
MAYBE_EXTERN_C void jsGlUniform4f(GlId locationId, r32 value0, r32 value1, r32 value2, r32 value3);
MAYBE_EXTERN_C void jsGlUniform1fv(GlId locationId, int valuesCount, const r32* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform2fv(GlId locationId, int valuesCount, const r32* valuesPntr); //TODO: Change valuesPntr to v2*
MAYBE_EXTERN_C void jsGlUniform3fv(GlId locationId, int valuesCount, const r32* valuesPntr); //TODO: Change valuesPntr to v3*
MAYBE_EXTERN_C void jsGlUniform4fv(GlId locationId, int valuesCount, const r32* valuesPntr); //TODO: Change valuesPntr to v4*
MAYBE_EXTERN_C void jsGlUniform2fv(GlId locationId, int valuesCount, const v2* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform3fv(GlId locationId, int valuesCount, const v3* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform4fv(GlId locationId, int valuesCount, const v4* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform1i(GlId locationId, int value);
MAYBE_EXTERN_C void jsGlUniform2i(GlId locationId, int value0, int value1);
MAYBE_EXTERN_C void jsGlUniform3i(GlId locationId, int value0, int value1, int value2);
MAYBE_EXTERN_C void jsGlUniform4i(GlId locationId, int value0, int value1, int value2, int value3);
MAYBE_EXTERN_C void jsGlUniform1iv(GlId locationId, int valuesCount, const int* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform2iv(GlId locationId, int valuesCount, const int* valuesPntr); //TODO: Change valuesPntr to v2i*
MAYBE_EXTERN_C void jsGlUniform3iv(GlId locationId, int valuesCount, const int* valuesPntr); //TODO: Change valuesPntr to v3i*
MAYBE_EXTERN_C void jsGlUniform4iv(GlId locationId, int valuesCount, const int* valuesPntr); //TODO: Change valuesPntr to v4i*
MAYBE_EXTERN_C void jsGlUniformMatrix2fv(GlId locationId, const r32* valuesPntr); //TODO: Change valuesPntr to mat2*
MAYBE_EXTERN_C void jsGlUniformMatrix3fv(GlId locationId, const r32* valuesPntr); //TODO: Change valuesPntr to mat3*
MAYBE_EXTERN_C void jsGlUniformMatrix4fv(GlId locationId, const r32* valuesPntr); //TODO: Change valuesPntr to mat4*
MAYBE_EXTERN_C void jsGlUniform2iv(GlId locationId, int valuesCount, const v2i* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform3iv(GlId locationId, int valuesCount, const v3i* valuesPntr);
MAYBE_EXTERN_C void jsGlUniform4iv(GlId locationId, int valuesCount, const v4i* valuesPntr);
MAYBE_EXTERN_C void jsGlUniformMatrix2fv(GlId locationId, const mat2* valuesPntr);
MAYBE_EXTERN_C void jsGlUniformMatrix3fv(GlId locationId, const mat3* valuesPntr);
MAYBE_EXTERN_C void jsGlUniformMatrix4fv(GlId locationId, const mat4* valuesPntr);
#endif // _CWASM_WEBGL_JS_IMPORTS_H