From 10a6ad2ac9ed687adcfa38e309053e50d3a325ef Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Tue, 18 Jul 2017 10:58:49 +0200 Subject: [PATCH] Added 3 more texture coord vec4f stream attributes --- libraries/gpu-gl/src/gpu/gl/GLBackendShader.cpp | 12 +++++++++--- libraries/gpu/src/gpu/Stream.cpp | 10 ++++++++-- libraries/gpu/src/gpu/Stream.h | 5 ++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/libraries/gpu-gl/src/gpu/gl/GLBackendShader.cpp b/libraries/gpu-gl/src/gpu/gl/GLBackendShader.cpp index ffc8140b25..0c1b6880cb 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLBackendShader.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLBackendShader.cpp @@ -485,9 +485,15 @@ void GLBackend::makeProgramBindings(ShaderObject& shaderObject) { glBindAttribLocation(glprogram, gpu::Stream::TANGENT, "inTangent"); } - loc = glGetAttribLocation(glprogram, "inTexCoord1"); - if (loc >= 0 && loc != gpu::Stream::TEXCOORD1) { - glBindAttribLocation(glprogram, gpu::Stream::TEXCOORD1, "inTexCoord1"); + char attribName[] = "inTexCoordn"; + for (auto i = 0; i < 4; i++) { + auto streamId = gpu::Stream::TEXCOORD1 + i; + + attribName[strlen(attribName) - 1] = '1' + i; + loc = glGetAttribLocation(glprogram, attribName); + if (loc >= 0 && loc != streamId) { + glBindAttribLocation(glprogram, streamId, attribName); + } } loc = glGetAttribLocation(glprogram, "inSkinClusterIndex"); diff --git a/libraries/gpu/src/gpu/Stream.cpp b/libraries/gpu/src/gpu/Stream.cpp index cdb972d8bf..427af1e78d 100644 --- a/libraries/gpu/src/gpu/Stream.cpp +++ b/libraries/gpu/src/gpu/Stream.cpp @@ -36,8 +36,14 @@ const ElementArray& getDefaultElements() { //SKIN_CLUSTER_WEIGHT = 6, Element::VEC4F_XYZW, //TEXCOORD1 = 7, - Element::VEC2F_UV - }}; + Element::VEC2F_UV, + //TEXCOORD2 = 7, + Element::VEC4F_XYZW, + //TEXCOORD3 = 7, + Element::VEC4F_XYZW, + //TEXCOORD4 = 7, + Element::VEC4F_XYZW + }}; return defaultElements; } diff --git a/libraries/gpu/src/gpu/Stream.h b/libraries/gpu/src/gpu/Stream.h index 0642131edf..336e34ecb4 100644 --- a/libraries/gpu/src/gpu/Stream.h +++ b/libraries/gpu/src/gpu/Stream.h @@ -38,8 +38,11 @@ public: SKIN_CLUSTER_INDEX = 5, SKIN_CLUSTER_WEIGHT = 6, TEXCOORD1 = 7, - NUM_INPUT_SLOTS = TEXCOORD1 + 1, + TEXCOORD2 = 8, + TEXCOORD3 = 9, + TEXCOORD4 = 10, + NUM_INPUT_SLOTS, DRAW_CALL_INFO = 15, // Reserve last input slot for draw call infos };