diff --git a/libraries/gpu/src/gpu/Config.slh b/libraries/gpu/src/gpu/Config.slh index 28f447a696..51ece6565a 100644 --- a/libraries/gpu/src/gpu/Config.slh +++ b/libraries/gpu/src/gpu/Config.slh @@ -11,18 +11,8 @@ <@if not GPU_CONFIG_SLH@> <@def GPU_CONFIG_SLH@> -<@if GLPROFILE == PC_GL @> - <@def GPU_FEATURE_PROFILE GPU_CORE@> - <@def GPU_TRANSFORM_PROFILE GPU_CORE@> - <@def VERSION_HEADER #version 430 compatibility@> -<@elif GLPROFILE == MAC_GL @> - <@def GPU_FEATURE_PROFILE GPU_LEGACY@> - <@def GPU_TRANSFORM_PROFILE GPU_LEGACY@> - <@def VERSION_HEADER #version 120@> -<@else@> - <@def GPU_FEATURE_PROFILE GPU_LEGACY@> - <@def GPU_TRANSFORM_PROFILE GPU_LEGACY@> - <@def VERSION_HEADER #version 120@> -<@endif@> +<@def GPU_FEATURE_PROFILE GPU_CORE@> +<@def GPU_TRANSFORM_PROFILE GPU_CORE@> +<@def VERSION_HEADER #version 410 core@> <@endif@> diff --git a/libraries/gpu/src/gpu/Inputs.slh b/libraries/gpu/src/gpu/Inputs.slh new file mode 100644 index 0000000000..1ff4350afb --- /dev/null +++ b/libraries/gpu/src/gpu/Inputs.slh @@ -0,0 +1,26 @@ + +<@if not GPU_INPUTS_SLH@> +<@def GPU_INPUTS_SLH@> + +layout(location = 0) in vec4 inPosition; +layout(location = 1) in vec3 inNormal; +layout(location = 2) in vec4 inColor; +layout(location = 3) in vec2 inTexCoord0; +layout(location = 4) in vec3 inTangent; +layout(location = 5) in ivec4 inSkinClusterIndex; +layout(location = 6) in vec4 inSkinClusterWeight; +layout(location = 7) in vec2 inTexCoord1; +layout(location = 8) in mat4 inInstanceXfm; +layout(location = 9) in vec2 inInstanceScale; +layout(location = 10) in vec2 inInstanceTranslate; + +<@endif@> diff --git a/libraries/gpu/src/gpu/Stream.h b/libraries/gpu/src/gpu/Stream.h index 27cb0ca539..46ea1574ed 100644 --- a/libraries/gpu/src/gpu/Stream.h +++ b/libraries/gpu/src/gpu/Stream.h @@ -27,13 +27,17 @@ public: // Possible input slots identifiers enum InputSlot { POSITION = 0, - NORMAL, - COLOR, - TEXCOORD, - TANGENT, - SKIN_CLUSTER_INDEX, - SKIN_CLUSTER_WEIGHT, - TEXCOORD1, + NORMAL = 1, + COLOR = 2, + TEXCOORD0 = 3, + TEXCOORD = TEXCOORD0, + TANGENT = 4, + SKIN_CLUSTER_INDEX = 5, + SKIN_CLUSTER_WEIGHT = 6, + TEXCOORD1 = 7, + INSTANCE_XFM = 8, + INSTANCE_SCALE = 9, + INSTANCE_TRANSLATE = 10, NUM_INPUT_SLOTS, }; diff --git a/libraries/model/src/model/Skybox.slv b/libraries/model/src/model/Skybox.slv index 0ca64ffbf7..d622dc0bdb 100755 --- a/libraries/model/src/model/Skybox.slv +++ b/libraries/model/src/model/Skybox.slv @@ -19,28 +19,19 @@ struct Skybox { vec4 _color; }; -<@if GPU_FEATURE_PROFILE == GPU_CORE @> uniform skyboxBuffer { Skybox _skybox; }; Skybox getSkybox() { return _skybox; } -<@else@> -uniform vec4 skyboxBuffer[1]; -Skybox getSkybox() { - Skybox _skybox; - _skybox._color = skyboxBuffer[0]; - return _skybox; -} -<@endif@> varying vec3 normal; varying vec2 texcoord; varying vec3 color; void main(void) { - texcoord = gl_Vertex.xy; + texcoord = inPosition.xy; Skybox skybox = getSkybox(); color = skybox._color.xyz; diff --git a/libraries/render-utils/src/deferred_light.slv b/libraries/render-utils/src/deferred_light.slv index 1427dd0f52..93723b0bae 100644 --- a/libraries/render-utils/src/deferred_light.slv +++ b/libraries/render-utils/src/deferred_light.slv @@ -14,5 +14,5 @@ void main(void) { gl_TexCoord[0] = gl_MultiTexCoord0; - gl_Position = gl_Vertex; + gl_Position = inPosition; } diff --git a/libraries/render-utils/src/deferred_light_limited.slv b/libraries/render-utils/src/deferred_light_limited.slv index e3051d43f7..262d798e12 100644 --- a/libraries/render-utils/src/deferred_light_limited.slv +++ b/libraries/render-utils/src/deferred_light_limited.slv @@ -12,6 +12,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include gpu/Input.slh@> + + void main(void) { gl_Position = ftransform(); vec4 projected = gl_Position / gl_Position.w; diff --git a/libraries/render-utils/src/model_lightmap_normal_map.slv b/libraries/render-utils/src/model_lightmap_normal_map.slv index bfa8bc2cc2..e777660864 100755 --- a/libraries/render-utils/src/model_lightmap_normal_map.slv +++ b/libraries/render-utils/src/model_lightmap_normal_map.slv @@ -14,16 +14,14 @@ <@include gpu/Transform.slh@> +<@include gpu/Inputs.slh@> + <$declareStandardTransform()$> const int MAX_TEXCOORDS = 2; uniform mat4 texcoordMatrices[MAX_TEXCOORDS]; -// the tangent vector -attribute vec3 tangent; - -attribute vec2 texcoord1; // the interpolated normal varying vec4 interpolatedNormal; @@ -51,9 +49,9 @@ void main(void) { // standard transform TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); - <$transformModelToClipPos(cam, obj, gl_Vertex, gl_Position)$> - <$transformModelToEyeDir(cam, obj, gl_Normal, interpolatedNormal.xyz)$> - <$transformModelToEyeDir(cam, obj, tangent, interpolatedTangent.xyz)$> + <$transformModelToClipPos(cam, obj, inPosition, gl_Position)$> + <$transformModelToEyeDir(cam, obj, inNormal, interpolatedNormal.xyz)$> + <$transformModelToEyeDir(cam, obj, inTangent, interpolatedTangent.xyz)$> interpolatedNormal = vec4(normalize(interpolatedNormal.xyz), 0.0); interpolatedTangent = vec4(normalize(interpolatedTangent.xyz), 0.0); diff --git a/tools/scribe/src/main.cpp b/tools/scribe/src/main.cpp index 10f0a026ca..989750acd8 100755 --- a/tools/scribe/src/main.cpp +++ b/tools/scribe/src/main.cpp @@ -188,21 +188,11 @@ int main (int argc, char** argv) { std::ostringstream targetStringStream; if (makeCPlusPlus) { targetStringStream << "// File generated by Scribe " << vars["_SCRIBE_DATE"] << std::endl; - targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl; targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl; - - // targetStringStream << "const char " << targetName << "[] = R\"XXXX(" << destStringStream.str() << ")XXXX\";"; - std::istringstream destStringStreamAgain(destStringStream.str()); + // targetStringStream << "const char " << targetName << "[] = R\"XXXX(" << destStringStream.str() << ")XXXX\";"; targetStringStream << "const char " << targetName << "[] = \n"; - while (!destStringStreamAgain.eof()) { - std::string lineToken; - std::getline(destStringStreamAgain, lineToken); - // targetStringStream << "\"" << lineToken << "\"\n"; - targetStringStream << "R\"X(" << lineToken << ")X\"\"\\n\"\n"; - } - - targetStringStream << ";\n" << std::endl << std::endl; + targetStringStream << "R\"SHADER(" << destStringStream.str() << ")SHADER\";\n\n"; targetStringStream << "#endif" << std::endl; } else { targetStringStream << destStringStream.str();