+
+ { FRAGMENT, "rgb_surface", "vec3", "rgb_unlit_surface", "!l" },
+ { FRAGMENT, "rgb_surface", "vec3", "rgb_lit_surface", "l" },
+ { FRAGMENT, "rgb_unlit_surface", "vec3", "basic_color.rgb", "!s" },
+ { FRAGMENT, "rgb_unlit_surface", "vec3", "basic_color.rgb*l_shadow", "s" },
+ { FRAGMENT, "rgb_lit_surface", "vec3", "rgb_illumination_diffuse", "!m" },
+ { FRAGMENT, "rgb_lit_surface", "vec3", "rgb_surface_ambient+rgb_surface_diffuse", "m!p" },
+ { FRAGMENT, "rgb_lit_surface", "vec3", "rgb_surface_ambient+rgb_surface_diffuse+rgb_surface_specular", "mp" },
+
+ { FRAGMENT, "surface_alpha", "float", "basic_color.a", "!m" },
+ { FRAGMENT, "surface_alpha", "float", "basic_color.a", "m!l" },
+ { FRAGMENT, "surface_alpha", "float", "material.diffuse.a", "ml!t" },
+ { FRAGMENT, "surface_alpha", "float", "material.diffuse.a*tex_sample.a", "mlt" },
+ { FRAGMENT, "basic_color", "vec4", "vec4(1.0)", "!m!t" },
+ { FRAGMENT, "basic_color", "vec4", "tex_sample", "!mt" },
+ { FRAGMENT, "basic_color", "vec4", "color", "m!t" },
+ { FRAGMENT, "basic_color", "vec4", "color*tex_sample", "mt" },
+
+ { FRAGMENT, "rgb_surface_ambient", "vec3", "rgb_illumination_ambient*material.ambient.rgb", "!t" },
+ { FRAGMENT, "rgb_surface_ambient", "vec3", "rgb_illumination_ambient*material.ambient.rgb*tex_sample.rgb", "t" },
+ { FRAGMENT, "rgb_illumination_ambient", "vec3", "ambient_color.rgb", 0 },
+
+ { FRAGMENT, "rgb_surface_specular", "vec3", "rgb_illumination_specular*material.specular.rgb", 0 },
+ { FRAGMENT, "rgb_illumination_specular", "vec3", "rgb_light_specular", "!s" },
+ { FRAGMENT, "rgb_illumination_specular", "vec3", "rgb_light_specular*l_shadow", "s" },
+ { FRAGMENT, "rgb_light_specular[i]", "vec3", "l_specular[i]*light_sources[i].specular.rgb", 0 },
+ { FRAGMENT, "l_specular[i]", "float", "pow(max(dot(n_zzz_half_vec[i], n_zzz_normal), 0.0), material.shininess)", 0 },
+
+ { FRAGMENT, "rgb_surface_diffuse", "vec3", "rgb_illumination_diffuse*material.diffuse.rgb", "!t" },
+ { FRAGMENT, "rgb_surface_diffuse", "vec3", "rgb_illumination_diffuse*material.diffuse.rgb*tex_sample.rgb", "t" },
+ { FRAGMENT, "rgb_illumination_diffuse", "vec3", "rgb_light_diffuse", "!s" },
+ { FRAGMENT, "rgb_illumination_diffuse", "vec3", "rgb_light_diffuse*l_shadow", "s" },
+ { FRAGMENT, "rgb_light_diffuse[i]", "vec3", "l_diffuse[i]*light_sources[i].diffuse.rgb", 0 },
+ { FRAGMENT, "l_diffuse[i]", "float", "max(dot(n_zzz_normal, n_zzz_light_dir[i]), 0.0)", 0 },
+