]> git.tdb.fi Git - libs/gl.git/commitdiff
Add unsigned integer types to Program reflection and ProgramData
authorMikko Rasa <tdb@tdb.fi>
Sun, 7 Nov 2021 09:54:01 +0000 (11:54 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sun, 7 Nov 2021 09:54:01 +0000 (11:54 +0200)
source/backends/opengl/program_backend.cpp
source/render/programdata.cpp
source/render/programdata.h

index bd54fbaa788348d2358163759de2549e83afbaf8..767811802ebf5c10eded6718324f7f1a106f4ab7 100644 (file)
@@ -312,6 +312,14 @@ void OpenGLProgram::query_uniforms()
                                        func = &uniform_wrapper<int, glUniform3iv>;
                                else if(u.type==INT_VEC4)
                                        func = &uniform_wrapper<int, glUniform4iv>;
+                               else if(u.type==UNSIGNED_INT)
+                                       func = &uniform_wrapper<unsigned, glUniform1uiv>;
+                               else if(u.type==UINT_VEC2)
+                                       func = &uniform_wrapper<unsigned, glUniform2uiv>;
+                               else if(u.type==UINT_VEC3)
+                                       func = &uniform_wrapper<unsigned, glUniform3uiv>;
+                               else if(u.type==UINT_VEC4)
+                                       func = &uniform_wrapper<unsigned, glUniform4uiv>;
                                else if(u.type==FLOAT_MAT2)
                                        func = &uniform_matrix_wrapper<float, glUniformMatrix2fv>;
                                else if(u.type==FLOAT_MAT3)
index 8defce5aab2ae43a802c8e348e0d32ec9d0e2289..40eba5e5d6840a4580c1d311c67da732231253ab 100644 (file)
@@ -149,6 +149,11 @@ void ProgramData::uniform(Tag tag, int v)
        uniform(tag, INT, 1, &v);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v)
+{
+       uniform(tag, UNSIGNED_INT, 1, &v);
+}
+
 void ProgramData::uniform(Tag tag, float v)
 {
        uniform(tag, FLOAT, 1, &v);
@@ -160,6 +165,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1)
        uniform2(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1)
+{
+       unsigned va[2] = { v0, v1 };
+       uniform2(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1)
 {
        float va[2] = { v0, v1 };
@@ -171,6 +182,11 @@ void ProgramData::uniform2(Tag tag, const int *v)
        uniform(tag, INT_VEC2, 1, v);
 }
 
+void ProgramData::uniform2(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC2, 1, v);
+}
+
 void ProgramData::uniform2(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC2, 1, v);
@@ -182,6 +198,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1, int v2)
        uniform3(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1, unsigned v2)
+{
+       unsigned va[3] = { v0, v1, v2 };
+       uniform3(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1, float v2)
 {
        float va[3] = { v0, v1, v2 };
@@ -193,6 +215,11 @@ void ProgramData::uniform3(Tag tag, const int *v)
        uniform(tag, INT_VEC3, 1, v);
 }
 
+void ProgramData::uniform3(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC3, 1, v);
+}
+
 void ProgramData::uniform3(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC3, 1, v);
@@ -204,6 +231,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1, int v2, int v3)
        uniform4(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1, unsigned v2, unsigned v3)
+{
+       unsigned va[4] = { v0, v1, v2, v3 };
+       uniform4(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1, float v2, float v3)
 {
        float va[4] = { v0, v1, v2, v3 };
@@ -220,6 +253,11 @@ void ProgramData::uniform4(Tag tag, const int *v)
        uniform(tag, INT_VEC4, 1, v);
 }
 
+void ProgramData::uniform4(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC4, 1, v);
+}
+
 void ProgramData::uniform4(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC4, 1, v);
@@ -280,6 +318,11 @@ void ProgramData::uniform_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT, n, v);
 }
 
+void ProgramData::uniform_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UNSIGNED_INT, n, v);
+}
+
 void ProgramData::uniform_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT, n, v);
@@ -290,6 +333,11 @@ void ProgramData::uniform1_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT, n, v);
 }
 
+void ProgramData::uniform1_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UNSIGNED_INT, n, v);
+}
+
 void ProgramData::uniform1_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT, n, v);
@@ -300,6 +348,11 @@ void ProgramData::uniform2_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC2, n, v);
 }
 
+void ProgramData::uniform2_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UINT_VEC2, n, v);
+}
+
 void ProgramData::uniform2_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC2, n, v);
@@ -310,6 +363,11 @@ void ProgramData::uniform3_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC3, n, v);
 }
 
+void ProgramData::uniform3_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, INT_VEC3, n, v);
+}
+
 void ProgramData::uniform3_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC3, n, v);
@@ -320,6 +378,11 @@ void ProgramData::uniform4_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC4, n, v);
 }
 
+void ProgramData::uniform4_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UINT_VEC4, n, v);
+}
+
 void ProgramData::uniform4_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC4, n, v);
index 9d08219ef84368943f6cb4535466bc61a1c742af..9b8a25cb15be498a916bf0ffcf28c868ea56bb02 100644 (file)
@@ -173,19 +173,26 @@ private:
        void mark_dirty(Mask);
 public:
        void uniform(Tag, int);
+       void uniform(Tag, unsigned);
        void uniform(Tag, float);
        void uniform(Tag, int, int);
+       void uniform(Tag, unsigned, unsigned);
        void uniform(Tag, float, float);
        void uniform2(Tag, const int *);
+       void uniform2(Tag, const unsigned *);
        void uniform2(Tag, const float *);
        void uniform(Tag, int, int, int);
+       void uniform(Tag, unsigned, unsigned, unsigned);
        void uniform(Tag, float, float, float);
        void uniform3(Tag, const int *);
+       void uniform3(Tag, const unsigned *);
        void uniform3(Tag, const float *);
        void uniform(Tag, int, int, int, int);
+       void uniform(Tag, unsigned, unsigned, unsigned, unsigned);
        void uniform(Tag, float, float, float, float);
        void uniform(Tag, const Color &);
        void uniform4(Tag, const int *);
+       void uniform4(Tag, const unsigned *);
        void uniform4(Tag, const float *);
        void uniform_matrix2(Tag, const float *);
        void uniform_matrix3x2(Tag, const float *);
@@ -198,14 +205,19 @@ public:
        void uniform(Tag, const Matrix &);
        void uniform_matrix4(Tag, const float *);
        void uniform_array(Tag, unsigned, const int *);
+       void uniform_array(Tag, unsigned, const unsigned *);
        void uniform_array(Tag, unsigned, const float *);
        void uniform1_array(Tag, unsigned, const int *);
+       void uniform1_array(Tag, unsigned, const unsigned *);
        void uniform1_array(Tag, unsigned, const float *);
        void uniform2_array(Tag, unsigned, const int *);
+       void uniform2_array(Tag, unsigned, const unsigned *);
        void uniform2_array(Tag, unsigned, const float *);
        void uniform3_array(Tag, unsigned, const int *);
+       void uniform3_array(Tag, unsigned, const unsigned *);
        void uniform3_array(Tag, unsigned, const float *);
        void uniform4_array(Tag, unsigned, const int *);
+       void uniform4_array(Tag, unsigned, const unsigned *);
        void uniform4_array(Tag, unsigned, const float *);
        void uniform_matrix2_array(Tag, unsigned, const float *);
        void uniform_matrix3x2_array(Tag, unsigned, const float *);