allow option for backfaces in ray_triangle
[vg.git] / vg_build_utils_shader.h
index 1c81c41822dd0532a4273c14bebdae3d97a3ea54..642e7fc4003ec4d734bc0db12820602a4df0a261 100644 (file)
@@ -45,13 +45,15 @@ static void parse_uniform_name( char *start, struct uniform *uf )
       if( start[i] == ';' )
       {
          start[i] = '\0';
-         strncpy( uf->name, start, sizeof(uf->name) );
+         vg_strncpy( start, uf->name, sizeof(uf->name), 
+                     k_strncpy_always_add_null );
       }
 
       if( start[i] == '[' )
       {
          start[i] = '\0';
-         strncpy( uf->name, start, sizeof(uf->name) );
+         vg_strncpy( start, uf->name, sizeof(uf->name),
+                     k_strncpy_always_add_null );
          uf->array = 1;
       }
       
@@ -61,7 +63,8 @@ static void parse_uniform_name( char *start, struct uniform *uf )
 
          if( !type_set )
          {
-            strncpy( uf->type, start, sizeof(uf->type) );
+            vg_strncpy( start, uf->type, sizeof(uf->type),
+                        k_strncpy_always_add_null );
             type_set = 1;
          }
          start = start+i+1;
@@ -194,12 +197,14 @@ int vg_build_shader( char *src_vert, /* path/to/vert.vs    */
    types[] =
    {
       { "float", "float f", "glUniform1f(%s,f);" },
+      { "bool", "int b", "glUniform1i(%s,b);" },
 
       { "vec2", "v2f v", "glUniform2fv(%s,1,v);" },
       { "vec3", "v3f v", "glUniform3fv(%s,1,v);" },
       { "vec4", "v4f v", "glUniform4fv(%s,1,v);" },
 
       { "sampler2D", "int i", "glUniform1i(%s,i);" },
+      { "samplerCube", "int i", "glUniform1i(%s,i);" },
       { "mat4x3", "m4x3f m", "glUniformMatrix4x3fv(%s,1,GL_FALSE,(float*)m);" },
       { "mat3", "m3x3f m", "glUniformMatrix3fv(%s,1,GL_FALSE,(float*)m);" },
       { "mat4", "m4x4f m", "glUniformMatrix4fv(%s,1,GL_FALSE,(float*)m);" },