summaryrefslogtreecommitdiff
path: root/drivers/gles3/shaders/scene.glsl
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-11-22 01:26:56 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-11-22 01:26:56 -0300
commit943d27f46ded993105928c4a46414aa16d84115e (patch)
treea92784b738f4a25cd332afc725ac4f52523f2336 /drivers/gles3/shaders/scene.glsl
parent70d095d8f201bd83a7106015f8f925ec54a8313c (diff)
Instancing is working! (hooray)
Diffstat (limited to 'drivers/gles3/shaders/scene.glsl')
-rw-r--r--drivers/gles3/shaders/scene.glsl26
1 files changed, 22 insertions, 4 deletions
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index f3dade9e50..c198534728 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -45,7 +45,7 @@ layout(location=6) in ivec4 bone_indices; // attrib:6
layout(location=7) in vec4 bone_weights; // attrib:7
#endif
-#ifdef USE_ATTRIBUTE_INSTANCING
+#ifdef USE_INSTANCING
layout(location=8) in highp vec4 instance_xform0;
layout(location=9) in highp vec4 instance_xform1;
@@ -171,6 +171,10 @@ void main() {
float binormalf = tangent_attrib.a;
#endif
+#if defined(ENABLE_COLOR_INTERP)
+ color_interp = color_attrib;
+#endif
+
#ifdef USE_SKELETON
@@ -191,6 +195,23 @@ void main() {
#endif // USE_SKELETON1
+#ifdef USE_INSTANCING
+
+ {
+ highp mat3x4 m=mat3x4(instance_xform0,instance_xform1,instance_xform2);
+
+ vertex.xyz = vertex * m;
+ normal = vec4(normal,0.0) * m;
+#if defined(ENABLE_TANGENT_INTERP) || defined(ENABLE_NORMALMAP) || defined(LIGHT_USE_ANISOTROPY)
+ tangent.xyz = vec4(tangent.xyz,0.0) * mn;
+#endif
+
+#if defined(ENABLE_COLOR_INTERP)
+ color_interp*=instance_color;
+#endif
+ }
+#endif //USE_INSTANCING
+
#if !defined(SKIP_TRANSFORM_USED)
vertex = modelview * vertex;
@@ -207,9 +228,6 @@ void main() {
-#if defined(ENABLE_COLOR_INTERP)
- color_interp = color_attrib;
-#endif
#if defined(ENABLE_UV_INTERP)
uv_interp = uv_attrib;