diff --git a/cmake/macros/AutoScribeShader.cmake b/cmake/macros/AutoScribeShader.cmake index 20aa334134..119dc23014 100644 --- a/cmake/macros/AutoScribeShader.cmake +++ b/cmake/macros/AutoScribeShader.cmake @@ -128,18 +128,17 @@ macro(AUTOSCRIBE_SHADER) AUTOSCRIBE_APPEND_QRC("${SHADER_COUNT}/name" "${SHADER_NAME_FILE}") if (USE_GLES) - set(SPIRV_CROSS_ARGS --version 310es) - AUTOSCRIBE_PLATFORM_SHADER("310es") - AUTOSCRIBE_PLATFORM_SHADER("310es/stereo") - else() + set(SPIRV_CROSS_ARGS --version 320es) + AUTOSCRIBE_PLATFORM_SHADER("320es") + AUTOSCRIBE_PLATFORM_SHADER("320es/stereo") + elseif(APPLE) set(SPIRV_CROSS_ARGS --version 410 --no-420pack-extension) AUTOSCRIBE_PLATFORM_SHADER("410") AUTOSCRIBE_PLATFORM_SHADER("410/stereo") - if (NOT APPLE) - set(SPIRV_CROSS_ARGS --version 450) - AUTOSCRIBE_PLATFORM_SHADER("450") - AUTOSCRIBE_PLATFORM_SHADER("450/stereo") - endif() + else() + set(SPIRV_CROSS_ARGS --version 450) + AUTOSCRIBE_PLATFORM_SHADER("450") + AUTOSCRIBE_PLATFORM_SHADER("450/stereo") endif() string(CONCAT SHADER_LIST "${SHADER_LIST}" "${SHADER_NAME} = ${SHADER_COUNT},\n") @@ -408,11 +407,11 @@ macro(AUTOSCRIBE_SHADER_LIBS) list(APPEND QT_RESOURCES_FILE ${CMAKE_CURRENT_BINARY_DIR}/shaders.qrc) list(APPEND AUTOSCRIBE_SHADER_HEADERS ${AUTOSCRIBE_HEADER_DIR}/mono.glsl ${AUTOSCRIBE_HEADER_DIR}/stereo.glsl) - list(APPEND AUTOSCRIBE_SHADER_HEADERS ${AUTOSCRIBE_HEADER_DIR}/450/header.glsl ${AUTOSCRIBE_HEADER_DIR}/410/header.glsl ${AUTOSCRIBE_HEADER_DIR}/310es/header.glsl) + list(APPEND AUTOSCRIBE_SHADER_HEADERS ${AUTOSCRIBE_HEADER_DIR}/450/header.glsl ${AUTOSCRIBE_HEADER_DIR}/410/header.glsl ${AUTOSCRIBE_HEADER_DIR}/320es/header.glsl) source_group("Shader Headers" FILES ${AUTOSCRIBE_HEADER_DIR}/mono.glsl ${AUTOSCRIBE_HEADER_DIR}/stereo.glsl) source_group("Shader Headers\\450" FILES ${AUTOSCRIBE_HEADER_DIR}/450/header.glsl) source_group("Shader Headers\\410" FILES ${AUTOSCRIBE_HEADER_DIR}/410/header.glsl) - source_group("Shader Headers\\310es" FILES ${AUTOSCRIBE_HEADER_DIR}/310es/header.glsl) + source_group("Shader Headers\\320es" FILES ${AUTOSCRIBE_HEADER_DIR}/320es/header.glsl) list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${AUTOSCRIBE_SHADER_HEADERS}) list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/ShaderEnums.h ${CMAKE_CURRENT_BINARY_DIR}/ShaderEnums.cpp) diff --git a/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf index 66acff616c..eae07fcc70 100644 --- a/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf +++ b/libraries/display-plugins/src/display-plugins/InterleavedSrgbToLinear.slf @@ -2,13 +2,13 @@ struct TextureData { ivec2 textureSize; }; -LAYOUT_STD140(binding=0) uniform textureDataBuffer { +UNIFORM_BUFFER(0, textureDataBuffer) { TextureData textureData; }; -LAYOUT(binding=0) uniform sampler2D colorMap; -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +TEXTURE(0, sampler2D, colorMap); +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { ivec2 texCoord = ivec2(floor(varTexCoord0 * vec2(textureData.textureSize))); diff --git a/libraries/entities-renderer/src/paintStroke.slf b/libraries/entities-renderer/src/paintStroke.slf index eb46be1e20..8a1acfd62d 100644 --- a/libraries/entities-renderer/src/paintStroke.slf +++ b/libraries/entities-renderer/src/paintStroke.slf @@ -13,15 +13,15 @@ <@if not HIFI_USE_FORWARD@> <@include DeferredBufferWrite.slh@> <@else@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@endif@> <@include paintStroke.slh@> <$declarePolyLineBuffers()$> <@include CullFace.slh@> - -LAYOUT(binding=0) uniform sampler2D _texture; +// the albedo texture +TEXTURE(0, sampler2D, originalTexture); <@if not HIFI_USE_FORWARD@> layout(location=0) in vec3 _normalWS; diff --git a/libraries/entities-renderer/src/paintStroke.slv b/libraries/entities-renderer/src/paintStroke.slv index 00c6685cde..078fa6dc84 100644 --- a/libraries/entities-renderer/src/paintStroke.slv +++ b/libraries/entities-renderer/src/paintStroke.slv @@ -11,10 +11,10 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); +INPUT(GPU_ATTR_COLOR, vec4, inColor); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Color.slh@> <@include gpu/Transform.slh@> @@ -24,11 +24,11 @@ layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; <$declarePolyLineBuffers()$> <@if not HIFI_USE_FORWARD@> - layout(location=0) out vec3 _normalWS; + OUTPUT(0, vec3, _normalWS); <@endif@> -layout(location=1) out vec2 _texCoord; -layout(location=2) out vec4 _color; -layout(location=3) out float _distanceFromCenter; +OUTPUT(1, vec2, _texCoord); +OUTPUT(2, vec4, _color); +OUTPUT(3, float, _distanceFromCenter); void main(void) { PolylineVertex vertex = getPolylineVertex(gl_VertexID / 2); @@ -53,20 +53,13 @@ void main(void) { vec3 normalEye = normalize(posEye.xyz); vec3 binormalEye = normalize(cross(normalEye, tangentEye)); - // Workaround for Nvidia driver bug - posEye.x += _distanceFromCenter * vertex.binormalAndHalfWidth.w * binormalEye.x; - posEye.y += _distanceFromCenter * vertex.binormalAndHalfWidth.w * binormalEye.y; - posEye.z += _distanceFromCenter * vertex.binormalAndHalfWidth.w * binormalEye.z; + posEye.xyz += _distanceFromCenter * vertex.binormalAndHalfWidth.w * binormalEye; <$transformEyeToClipPos(cam, posEye, gl_Position)$> -<@if not HIFI_USE_FORWARD@> <$transformEyeToWorldDir(cam, normalEye, _normalWS)$> -<@endif@> } else { vec3 normal = vertex.normal.xyz; position.xyz += _distanceFromCenter * vertex.binormalAndHalfWidth.w * binormal; <$transformModelToClipPos(cam, obj, position, gl_Position)$> -<@if not HIFI_USE_FORWARD@> <$transformModelToWorldDir(cam, obj, normal, _normalWS)$> -<@endif@> } -} \ No newline at end of file +} diff --git a/libraries/entities-renderer/src/polyvox.slf b/libraries/entities-renderer/src/polyvox.slf index 3456823081..c77752e43a 100644 --- a/libraries/entities-renderer/src/polyvox.slf +++ b/libraries/entities-renderer/src/polyvox.slf @@ -14,7 +14,7 @@ <@include Fade.slh@> <$declareFadeFragment()$> - layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; + INPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); <@endif@> <@if not HIFI_USE_SHADOW@> @@ -35,26 +35,27 @@ <@endif@> <@if HIFI_USE_FORWARD@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; + INPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> - layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec3 _positionMS; - layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; + INPUT(RENDER_UTILS_ATTR_POSITION_MS, vec4, _positionMS); + INPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); - LAYOUT(binding=ENTITIES_TEXTURE_POLYVOX_XMAP) uniform sampler2D xMap; - LAYOUT(binding=ENTITIES_TEXTURE_POLYVOX_YMAP) uniform sampler2D yMap; - LAYOUT(binding=ENTITIES_TEXTURE_POLYVOX_ZMAP) uniform sampler2D zMap; + TEXTURE(ENTITIES_TEXTURE_POLYVOX_XMAP, sampler2D, xMap); + TEXTURE(ENTITIES_TEXTURE_POLYVOX_YMAP, sampler2D, yMap); + TEXTURE(ENTITIES_TEXTURE_POLYVOX_ZMAP, sampler2D, zMap); struct PolyvoxParams { vec4 voxelVolumeSize; }; - LAYOUT(binding=0) uniform polyvoxParamsBuffer { + UNIFORM_BUFFER(0, polyvoxParamsBuffer) { PolyvoxParams params; }; + <@endif@> <@if HIFI_USE_SHADOW or HIFI_USE_FORWARD@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@endif@> void main(void) { diff --git a/libraries/entities-renderer/src/polyvox.slv b/libraries/entities-renderer/src/polyvox.slv index 4a78a80044..6f9c0ea96f 100644 --- a/libraries/entities-renderer/src/polyvox.slv +++ b/libraries/entities-renderer/src/polyvox.slv @@ -10,8 +10,8 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); <@include render-utils/ShaderConstants.h@> @@ -19,14 +19,14 @@ layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; <$declareStandardTransform()$> <@if HIFI_USE_FADE@> - layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; + OUTPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); <@endif@> <@if not HIFI_USE_SHADOW@> <@if HIFI_USE_FORWARD@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; + OUTPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> - layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec3 _positionMS; - layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; + OUTPUT(RENDER_UTILS_ATTR_POSITION_MS, vec4, _positionMS); + OUTPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); <@endif@> void main(void) { @@ -44,7 +44,7 @@ void main(void) { <@endif@> <$transformModelToWorldDir(cam, obj, inNormal.xyz, _normalWS)$> - _positionMS = inPosition.xyz; + _positionMS = inPosition; <@endif@> <@if HIFI_USE_FADE@> <$transformModelToWorldPos(obj, inPosition, _positionWS)$> diff --git a/libraries/entities-renderer/src/textured_particle.slf b/libraries/entities-renderer/src/textured_particle.slf index 04b74771a0..ccc31dc591 100644 --- a/libraries/entities-renderer/src/textured_particle.slf +++ b/libraries/entities-renderer/src/textured_particle.slf @@ -10,13 +10,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=0) in vec4 varColor; -layout(location=1) in vec2 varTexcoord; +INPUT(0, vec4, varColor); +INPUT(1, vec2, varTexcoord); <@if HIFI_USE_FORWARD or HIFI_USE_SHADOW@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@else@> <@include DeferredBufferWrite.slh@> <@endif@> diff --git a/libraries/entities-renderer/src/textured_particle.slv b/libraries/entities-renderer/src/textured_particle.slv index 9fd5e87d32..7dc930876c 100644 --- a/libraries/entities-renderer/src/textured_particle.slv +++ b/libraries/entities-renderer/src/textured_particle.slv @@ -43,15 +43,15 @@ struct ParticleUniforms { vec2 spare; }; -LAYOUT_STD140(binding=0) uniform particleBuffer { +UNIFORM_BUFFER(0, particleBuffer) { ParticleUniforms particle; }; -layout(location=0) in vec3 inPosition; -layout(location=2) in vec2 inColor; // This is actual Lifetime + Seed +INPUT(0, vec3, inPosition); +INPUT(2, vec2, inColor); // This is actual Lifetime + Seed -layout(location=0) out vec4 varColor; -layout(location=1) out vec2 varTexcoord; +OUTPUT(0, vec4, varColor); +OUTPUT(1, vec2, varTexcoord); float bezierInterpolate(float y1, float y2, float y3, float u) { // https://en.wikipedia.org/wiki/Bezier_curve diff --git a/libraries/gpu/src/gpu/DrawColor.slf b/libraries/gpu/src/gpu/DrawColor.slf index 3d5b569662..2639629470 100644 --- a/libraries/gpu/src/gpu/DrawColor.slf +++ b/libraries/gpu/src/gpu/DrawColor.slf @@ -17,11 +17,11 @@ struct DrawColorParams { vec4 color; }; -LAYOUT(binding=0) uniform drawColorParamsBuffer { +UNIFORM_BUFFER(0, drawColorParamsBuffer) { DrawColorParams params; }; -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = params.color; diff --git a/libraries/gpu/src/gpu/DrawColoredTexture.slf b/libraries/gpu/src/gpu/DrawColoredTexture.slf index a4f03f925d..a6fa35be32 100755 --- a/libraries/gpu/src/gpu/DrawColoredTexture.slf +++ b/libraries/gpu/src/gpu/DrawColoredTexture.slf @@ -13,18 +13,18 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); struct DrawColorParams { vec4 color; }; -LAYOUT(binding=0) uniform drawColorParams { +UNIFORM_BUFFER(0, drawColorParams) { DrawColorParams params; }; -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = texture(colorMap, varTexCoord0) * params.color; diff --git a/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv b/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv index a59180ec31..30c478f3eb 100755 --- a/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv +++ b/libraries/gpu/src/gpu/DrawTexcoordRectTransformUnitQuad.slv @@ -25,11 +25,11 @@ struct TexCoordRectParams { vec4 texcoordRect; }; -LAYOUT(binding=0) uniform texcoordRectBuffer { +UNIFORM_BUFFER(0, texcoordRectBuffer) { TexCoordRectParams params; }; -layout(location=0) out vec2 varTexCoord0; +OUTPUT(0, vec2, varTexCoord0); void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawTexture.slf b/libraries/gpu/src/gpu/DrawTexture.slf index f8f06eb6ca..6b3b0938aa 100755 --- a/libraries/gpu/src/gpu/DrawTexture.slf +++ b/libraries/gpu/src/gpu/DrawTexture.slf @@ -14,10 +14,10 @@ // -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = texture(colorMap, varTexCoord0); diff --git a/libraries/gpu/src/gpu/DrawTextureMirroredX.slf b/libraries/gpu/src/gpu/DrawTextureMirroredX.slf index f959d8480b..249a36d6b7 100644 --- a/libraries/gpu/src/gpu/DrawTextureMirroredX.slf +++ b/libraries/gpu/src/gpu/DrawTextureMirroredX.slf @@ -15,10 +15,10 @@ <@include gpu/Color.slh@> -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = vec4(texture(colorMap, vec2(1.0 - varTexCoord0.x, varTexCoord0.y)).xyz, 1.0); diff --git a/libraries/gpu/src/gpu/DrawTextureOpaque.slf b/libraries/gpu/src/gpu/DrawTextureOpaque.slf index 458eff75ed..5bd285116d 100755 --- a/libraries/gpu/src/gpu/DrawTextureOpaque.slf +++ b/libraries/gpu/src/gpu/DrawTextureOpaque.slf @@ -14,11 +14,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = vec4(texture(colorMap, varTexCoord0).xyz, 1.0); diff --git a/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv b/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv index eed3c92245..70414f57bd 100755 --- a/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv +++ b/libraries/gpu/src/gpu/DrawTransformUnitQuad.slv @@ -18,7 +18,7 @@ <$declareStandardTransform()$> -layout(location=0) out vec2 varTexCoord0; +OUTPUT(0, vec2, varTexCoord0); void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv index 39771403d1..9d0d0f1360 100644 --- a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv @@ -18,9 +18,9 @@ <$declareStandardTransform()$> -layout(location=0) in vec4 inPosition; +INPUT(0, vec4, inPosition); -layout(location=0) out vec3 varWorldPos; +OUTPUT(0, vec3, varWorldPos); void main(void) { // standard transform diff --git a/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv b/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv index 0378cd30e3..34d6394c06 100644 --- a/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv +++ b/libraries/gpu/src/gpu/DrawUnitQuadTexcoord.slv @@ -13,7 +13,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) out vec2 varTexCoord0; +OUTPUT(0, vec2, varTexCoord0); void main(void) { const float depth = 1.0; diff --git a/libraries/gpu/src/gpu/DrawVertexPosition.slv b/libraries/gpu/src/gpu/DrawVertexPosition.slv index e9961750ba..f00e4ac0bc 100644 --- a/libraries/gpu/src/gpu/DrawVertexPosition.slv +++ b/libraries/gpu/src/gpu/DrawVertexPosition.slv @@ -14,7 +14,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec4 inPosition; +INPUT(0, vec4, inPosition); void main(void) { gl_Position = inPosition; diff --git a/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv b/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv index ae252f73d2..855d95f5ed 100755 --- a/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv +++ b/libraries/gpu/src/gpu/DrawViewportQuadTransformTexcoord.slv @@ -18,7 +18,7 @@ <$declareStandardTransform()$> -layout(location=0) out vec2 varTexCoord0; +OUTPUT(0, vec2, varTexCoord0); void main(void) { const vec4 UNIT_QUAD[4] = vec4[4]( diff --git a/libraries/gpu/src/gpu/DrawWhite.slf b/libraries/gpu/src/gpu/DrawWhite.slf index 1cdc047655..ec5f1aa8a4 100644 --- a/libraries/gpu/src/gpu/DrawWhite.slf +++ b/libraries/gpu/src/gpu/DrawWhite.slf @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = vec4(1.0); diff --git a/libraries/gpu/src/gpu/Inputs.slh b/libraries/gpu/src/gpu/Inputs.slh index a121b46ed8..0af51ac345 100644 --- a/libraries/gpu/src/gpu/Inputs.slh +++ b/libraries/gpu/src/gpu/Inputs.slh @@ -13,15 +13,15 @@ <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; -layout(location=GPU_ATTR_TANGENT) in vec4 inTangent; -layout(location=GPU_ATTR_SKIN_CLUSTER_INDEX) in ivec4 inSkinClusterIndex; -layout(location=GPU_ATTR_SKIN_CLUSTER_WEIGHT) in vec4 inSkinClusterWeight; -layout(location=GPU_ATTR_TEXCOORD1) in vec4 inTexCoord1; -layout(location=GPU_ATTR_TEXCOORD2) in vec4 inTexCoord2; -layout(location=GPU_ATTR_TEXCOORD3) in vec4 inTexCoord3; -layout(location=GPU_ATTR_TEXCOORD4) in vec4 inTexCoord4; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); +INPUT(GPU_ATTR_COLOR, vec4, inColor); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); +INPUT(GPU_ATTR_TANGENT, vec4, inTangent); +INPUT(GPU_ATTR_SKIN_CLUSTER_INDEX, ivec4, inSkinClusterIndex); +INPUT(GPU_ATTR_SKIN_CLUSTER_WEIGHT, vec4, inSkinClusterWeight); +INPUT(GPU_ATTR_TEXCOORD1, vec4, inTexCoord1); +INPUT(GPU_ATTR_TEXCOORD2, vec4, inTexCoord2); +INPUT(GPU_ATTR_TEXCOORD3, vec4, inTexCoord3); +INPUT(GPU_ATTR_TEXCOORD4, vec4, inTexCoord4); <@endif@> diff --git a/libraries/gpu/src/gpu/MipGeneration.slh b/libraries/gpu/src/gpu/MipGeneration.slh index b5d4ab3303..09f8fd55eb 100644 --- a/libraries/gpu/src/gpu/MipGeneration.slh +++ b/libraries/gpu/src/gpu/MipGeneration.slh @@ -13,7 +13,7 @@ <@include gpu/ShaderConstants.h@> -LAYOUT(binding=GPU_TEXTURE_MIP_CREATION_INPUT) uniform sampler2D texMap; +TEXTURE(GPU_TEXTURE_MIP_CREATION_INPUT, sampler2D, texMap); in vec2 varTexCoord0; diff --git a/libraries/gpu/src/gpu/Transform.slh b/libraries/gpu/src/gpu/Transform.slh index 767db13595..0a8592128b 100644 --- a/libraries/gpu/src/gpu/Transform.slh +++ b/libraries/gpu/src/gpu/Transform.slh @@ -16,7 +16,7 @@ #define TransformCamera _TransformCamera -LAYOUT_STD140(binding=GPU_BUFFER_TRANSFORM_CAMERA) uniform transformCameraBuffer { +UNIFORM_BUFFER(GPU_BUFFER_TRANSFORM_CAMERA, transformCameraBuffer) { #ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_STEREO_CAMERA TransformCamera _camera[2]; @@ -32,10 +32,10 @@ LAYOUT_STD140(binding=GPU_BUFFER_TRANSFORM_CAMERA) uniform transformCameraBuffer #ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_STEREO_CAMERA #ifdef GPU_TRANSFORM_STEREO_CAMERA_ATTRIBUTED -layout(location=GPU_ATTR_STEREO_SIDE) in int _inStereoSide; +INPUT(GPU_ATTR_STEREO_SIDE, int, _inStereoSide); #endif -layout(location=GPU_ATTR_V2F_STEREO_SIDE) flat out int _stereoSide; +FLAT_OUTPUT(GPU_ATTR_V2F_STEREO_SIDE, int, _stereoSide); // In stereo drawcall mode Instances are drawn twice (left then right) hence the true InstanceID is the gl_InstanceID / 2 int gpu_InstanceID() { @@ -60,7 +60,7 @@ int gpu_InstanceID() { #ifdef GPU_PIXEL_SHADER #ifdef GPU_TRANSFORM_STEREO_CAMERA -layout(location=GPU_ATTR_V2F_STEREO_SIDE) flat in int _stereoSide; +FLAT_INPUT(GPU_ATTR_V2F_STEREO_SIDE, int, _stereoSide); #endif #endif @@ -117,10 +117,10 @@ struct TransformObject { mat4 _modelInverse; }; -layout(location=GPU_ATTR_DRAW_CALL_INFO) in ivec2 _drawCallInfo; +INPUT(GPU_ATTR_DRAW_CALL_INFO, ivec2, _drawCallInfo); #if defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT_STD140(binding=GPU_STORAGE_TRANSFORM_OBJECT) buffer transformObjectBuffer { +RESOURCE_BUFFER(GPU_STORAGE_TRANSFORM_OBJECT, transformObjectBuffer) { TransformObject _object[]; }; TransformObject getTransformObject() { @@ -128,7 +128,7 @@ TransformObject getTransformObject() { return transformObject; } #else -LAYOUT(binding=GPU_TEXTURE_TRANSFORM_OBJECT) uniform samplerBuffer transformObjectBuffer; +RESOURCE_BUFFER(GPU_TEXTURE_TRANSFORM_OBJECT, transformObjectBuffer); TransformObject getTransformObject() { int offset = 8 * _drawCallInfo.x; diff --git a/libraries/graphics/src/graphics/Haze.slh b/libraries/graphics/src/graphics/Haze.slh index a2d8bb0523..78edd6c2c5 100644 --- a/libraries/graphics/src/graphics/Haze.slh +++ b/libraries/graphics/src/graphics/Haze.slh @@ -38,7 +38,8 @@ struct HazeParams { float hazeKeyLightAltitudeFactor; }; -LAYOUT_STD140(binding=GRAPHICS_BUFFER_HAZE_PARAMS) uniform hazeBuffer { +// See ShapePipeline::Slot::BUFFER in ShapePipeline.h +UNIFORM_BUFFER(GRAPHICS_BUFFER_HAZE_PARAMS, hazeBuffer) { HazeParams hazeParams; }; diff --git a/libraries/graphics/src/graphics/Light.slh b/libraries/graphics/src/graphics/Light.slh index d8ce697b98..0b64fa1675 100644 --- a/libraries/graphics/src/graphics/Light.slh +++ b/libraries/graphics/src/graphics/Light.slh @@ -63,7 +63,7 @@ float getLightAmbientMapNumMips(LightAmbient l) { return l._ambientInfo.y; } <@if N@> -LAYOUT(binding=GRAPHICS_BUFFER_LIGHT) uniform lightBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_LIGHT, lightBuffer) { Light lightArray[<$N$>]; }; Light getLight(int index) { @@ -71,7 +71,7 @@ Light getLight(int index) { } <@else@> -LAYOUT(binding=GRAPHICS_BUFFER_KEY_LIGHT) uniform keyLightBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_KEY_LIGHT, keyLightBuffer) { Light light; }; Light getKeyLight() { @@ -87,7 +87,7 @@ Light getKeyLight() { <@if N@> -LAYOUT(binding=GRAPHICS_BUFFER_AMBIENT_LIGHT) uniform lightAmbientBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_AMBIENT_LIGHT, lightAmbientBuffer) { LightAmbient lightAmbientArray[<$N$>]; }; @@ -96,7 +96,7 @@ LightAmbient getLightAmbient(int index) { } <@else@> -LAYOUT(binding=GRAPHICS_BUFFER_AMBIENT_LIGHT) uniform lightAmbientBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_AMBIENT_LIGHT, lightAmbientBuffer) { LightAmbient lightAmbient; }; diff --git a/libraries/graphics/src/graphics/Material.slh b/libraries/graphics/src/graphics/Material.slh index 4d4dcde34c..23c9d0d915 100644 --- a/libraries/graphics/src/graphics/Material.slh +++ b/libraries/graphics/src/graphics/Material.slh @@ -67,7 +67,7 @@ struct Material { }; <@endif@> -LAYOUT_STD140(binding=GRAPHICS_BUFFER_MATERIAL) uniform materialBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_MATERIAL, materialBuffer) { Material _mat; TexMapArray _texMapArray; }; diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index 425b8deed8..92b24c61f8 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -153,14 +153,14 @@ float fetchScatteringMap(vec2 uv) { #else <@if withAlbedo@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_ALBEDO) uniform sampler2D albedoMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_ALBEDO, sampler2D, albedoMap); vec4 fetchAlbedoMap(vec2 uv) { return texture(albedoMap, uv, TAA_TEXTURE_LOD_BIAS); } <@endif@> <@if withNormal@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_NORMAL) uniform sampler2D normalMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_NORMAL, sampler2D, normalMap); vec3 fetchNormalMap(vec2 uv) { // unpack normal, swizzle to get into hifi tangent space with Y axis pointing out vec2 t = 2.0 * (texture(normalMap, uv, TAA_TEXTURE_LOD_BIAS).rg - vec2(0.5, 0.5)); @@ -170,35 +170,35 @@ vec3 fetchNormalMap(vec2 uv) { <@endif@> <@if withMetallic@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_METALLIC) uniform sampler2D metallicMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_METALLIC, sampler2D, metallicMap); float fetchMetallicMap(vec2 uv) { return (texture(metallicMap, uv, TAA_TEXTURE_LOD_BIAS).r); } <@endif@> <@if withEmissive@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP) uniform sampler2D emissiveMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP, sampler2D, emissiveMap); vec3 fetchEmissiveMap(vec2 uv) { return texture(emissiveMap, uv, TAA_TEXTURE_LOD_BIAS).rgb; } <@endif@> <@if withRoughness@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS) uniform sampler2D roughnessMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS, sampler2D, roughnessMap); float fetchRoughnessMap(vec2 uv) { return (texture(roughnessMap, uv, TAA_TEXTURE_LOD_BIAS).r); } <@endif@> <@if withOcclusion@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_OCCLUSION) uniform sampler2D occlusionMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_OCCLUSION, sampler2D, occlusionMap); float fetchOcclusionMap(vec2 uv) { return texture(occlusionMap, uv).r; } <@endif@> <@if withScattering@> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_SCATTERING) uniform sampler2D scatteringMap; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_SCATTERING, sampler2D, scatteringMap); float fetchScatteringMap(vec2 uv) { float scattering = texture(scatteringMap, uv, TAA_TEXTURE_LOD_BIAS).r; // boolean scattering for now return max(((scattering - 0.1) / 0.9), 0.0); @@ -248,9 +248,9 @@ float fetchScatteringMap(vec2 uv) { <$declareMaterialTexMapArrayBuffer()$> -LAYOUT(binding=GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP) uniform sampler2D emissiveMap; -vec3 fetchLightMap(vec2 uv) { - vec2 lightmapParams = getTexMapArray()._lightmapParams; +TEXTURE(GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP, sampler2D, emissiveMap); +vec3 fetchLightmapMap(vec2 uv) { + vec2 lightmapParams = getTexMapArray()._lightmapParams.xy; return (vec3(lightmapParams.x) + lightmapParams.y * texture(emissiveMap, uv).rgb); } <@endfunc@> diff --git a/libraries/graphics/src/graphics/skybox.slf b/libraries/graphics/src/graphics/skybox.slf index 2d5ba4d26b..08191a991b 100755 --- a/libraries/graphics/src/graphics/skybox.slf +++ b/libraries/graphics/src/graphics/skybox.slf @@ -22,18 +22,18 @@ <@include graphics/Haze.slh@> <@endif@> -LAYOUT(binding=GRAPHICS_TEXTURE_SKYBOX) uniform samplerCube cubeMap; +TEXTURE(GRAPHICS_TEXTURE_SKYBOX, samplerCube, cubeMap); struct Skybox { vec4 color; }; -LAYOUT(binding=GRAPHICS_BUFFER_SKYBOX_PARAMS) uniform skyboxBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_SKYBOX_PARAMS, skyboxBuffer) { Skybox skybox; }; -layout(location=0) in vec3 _normal; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec3, _normal); +OUTPUT(0, vec4, _fragColor); void main(void) { vec3 normal = normalize(_normal); diff --git a/libraries/graphics/src/graphics/skybox.slv b/libraries/graphics/src/graphics/skybox.slv index a6e6930d22..1df9a455c2 100755 --- a/libraries/graphics/src/graphics/skybox.slv +++ b/libraries/graphics/src/graphics/skybox.slv @@ -13,7 +13,7 @@ <@include gpu/Transform.slh@> <$declareStandardTransform()$> -layout(location=0) out vec3 _normal; +OUTPUT(0, vec3, _normal); void main(void) { const float depth = 0.0; diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slh b/libraries/procedural/src/procedural/ProceduralCommon.slh index e2344dc14e..cabcb5e593 100644 --- a/libraries/procedural/src/procedural/ProceduralCommon.slh +++ b/libraries/procedural/src/procedural/ProceduralCommon.slh @@ -11,10 +11,10 @@ <@include gpu/Noise.slh@> <@include procedural/ShaderConstants.h@> -LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL0) uniform sampler2D iChannel0; -LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL1) uniform sampler2D iChannel1; -LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL2) uniform sampler2D iChannel2; -LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL3) uniform sampler2D iChannel3; +TEXTURE(PROCEDURAL_TEXTURE_CHANNEL0, sampler2D, iChannel0); +TEXTURE(PROCEDURAL_TEXTURE_CHANNEL1, sampler2D, iChannel1); +TEXTURE(PROCEDURAL_TEXTURE_CHANNEL2, sampler2D, iChannel2); +TEXTURE(PROCEDURAL_TEXTURE_CHANNEL3, sampler2D, iChannel3); // DO NOT TOUCH // This block does not follow our normal rules of always using a struct and @@ -24,7 +24,7 @@ LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL3) uniform sampler2D iChannel3; // comptability with existing procedural shaders that previously relied on these // inputs as uniforms, not members of a UBO -LAYOUT_STD140(binding=PROCEDURAL_BUFFER_INPUTS) uniform standardInputsBuffer { +UNIFORM_BUFFER(0, standardInputsBuffer) { // Offset 0 vec4 date; // Offset 16, acts as vec4 for alignment purposes diff --git a/libraries/procedural/src/procedural/proceduralSkybox.slf b/libraries/procedural/src/procedural/proceduralSkybox.slf index f938e0b9a2..9570176c7e 100644 --- a/libraries/procedural/src/procedural/proceduralSkybox.slf +++ b/libraries/procedural/src/procedural/proceduralSkybox.slf @@ -12,18 +12,18 @@ // <@include graphics/ShaderConstants.h@> -LAYOUT(binding=GRAPHICS_TEXTURE_SKYBOX) uniform samplerCube cubeMap; +TEXTURE(GRAPHICS_TEXTURE_SKYBOX, samplerCube, cubeMap); struct Skybox { vec4 color; }; -LAYOUT(binding=GRAPHICS_BUFFER_SKYBOX_PARAMS) uniform skyboxBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_SKYBOX_PARAMS, skyboxBuffer) { Skybox skybox; }; -layout(location=0) in vec3 _normal; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec3, _normal); +OUTPUT(0, vec4, _fragColor); <@include procedural/ProceduralCommon.slh@> diff --git a/libraries/render-utils/src/Blendshape.slh b/libraries/render-utils/src/Blendshape.slh index f2c6bfe794..0c406bcb71 100644 --- a/libraries/render-utils/src/Blendshape.slh +++ b/libraries/render-utils/src/Blendshape.slh @@ -11,12 +11,12 @@ <@func declareBlendshape(USE_NORMAL, USE_TANGENT)@> #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer blendshapeOffsetsBuffer; +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_TEXTURE, blendshapeOffsetsBuffer); uvec4 getPackedBlendshapeOffset(int i) { return floatBitsToUint(texelFetch(blendshapeOffsetsBuffer, i)); } #else -LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer blendshapeOffsetsBuffer { +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_STORAGE, blendshapeOffsetsBuffer) { uvec4 _packedBlendshapeOffsets[]; }; uvec4 getPackedBlendshapeOffset(int i) { diff --git a/libraries/render-utils/src/BloomApply.slf b/libraries/render-utils/src/BloomApply.slf index dcdb989780..cea70e4635 100644 --- a/libraries/render-utils/src/BloomApply.slf +++ b/libraries/render-utils/src/BloomApply.slf @@ -12,16 +12,16 @@ <@include BloomApply.shared.slh@> <@include render-utils/ShaderConstants.h@> -LAYOUT(binding=0) uniform sampler2D blurMap0; -LAYOUT(binding=1) uniform sampler2D blurMap1; -LAYOUT(binding=2) uniform sampler2D blurMap2; +TEXTURE(0, sampler2D, blurMap0); +TEXTURE(1, sampler2D, blurMap1); +TEXTURE(2, sampler2D, blurMap2); -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_BLOOM_PARAMS, parametersBuffer) { Parameters parameters; }; -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { vec4 blur0 = texture(blurMap0, varTexCoord0); diff --git a/libraries/render-utils/src/BloomThreshold.slf b/libraries/render-utils/src/BloomThreshold.slf index bbf863994f..26e19e157c 100644 --- a/libraries/render-utils/src/BloomThreshold.slf +++ b/libraries/render-utils/src/BloomThreshold.slf @@ -12,13 +12,13 @@ <@include BloomThreshold.shared.slh@> <@include render-utils/ShaderConstants.h@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_BLOOM_COLOR) uniform sampler2D colorMap; -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_BLOOM_PARAMS) uniform parametersBuffer { +TEXTURE(RENDER_UTILS_TEXTURE_BLOOM_COLOR, sampler2D, colorMap); +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_BLOOM_PARAMS, parametersBuffer) { Parameters parameters; }; -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { vec2 startUv = varTexCoord0; diff --git a/libraries/render-utils/src/DeferredBufferRead.slh b/libraries/render-utils/src/DeferredBufferRead.slh index 868b93ff91..35e8046171 100644 --- a/libraries/render-utils/src/DeferredBufferRead.slh +++ b/libraries/render-utils/src/DeferredBufferRead.slh @@ -17,23 +17,23 @@ // See DeferredShader_MapSlot in DeferredLightingEffect.cpp for constants // the albedo texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRRED_COLOR) uniform sampler2D albedoMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRRED_COLOR, sampler2D, albedoMap); // the normal texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL) uniform sampler2D normalMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL, sampler2D, normalMap); // the specular texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR) uniform sampler2D specularMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR, sampler2D, specularMap); // the depth texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH) uniform sampler2D depthMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE) uniform sampler2D linearZeyeMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH, sampler2D, depthMap); +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE, sampler2D, linearZeyeMap); // the obscurance texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE) uniform sampler2D obscuranceMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE, sampler2D, obscuranceMap); // the lighting texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING) uniform sampler2D lightingMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING, sampler2D, lightingMap); struct DeferredFragment { @@ -160,14 +160,14 @@ DeferredFragment unpackDeferredFragment(DeferredFrameTransform deferredTransform <@func declareDeferredCurvature()@> // the curvature texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE) uniform sampler2D curvatureMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE, sampler2D, curvatureMap); vec4 fetchCurvature(vec2 texcoord) { return texture(curvatureMap, texcoord); } // the curvature texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE) uniform sampler2D diffusedCurvatureMap; +TEXTURE(RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE, sampler2D, diffusedCurvatureMap); vec4 fetchDiffusedCurvature(vec2 texcoord) { return texture(diffusedCurvatureMap, texcoord); diff --git a/libraries/render-utils/src/DeferredBufferWrite.slh b/libraries/render-utils/src/DeferredBufferWrite.slh index de3d0a3087..8e180a954a 100644 --- a/libraries/render-utils/src/DeferredBufferWrite.slh +++ b/libraries/render-utils/src/DeferredBufferWrite.slh @@ -14,10 +14,10 @@ <@include DeferredBuffer.slh@> -layout(location=0) out vec4 _fragColor0; // albedo / metallic -layout(location=1) out vec4 _fragColor1; // Normal -layout(location=2) out vec4 _fragColor2; // scattering / emissive / occlusion -layout(location=3) out vec4 _fragColor3; // emissive +OUTPUT(0, vec4, _fragColor0); // albedo / metallic +OUTPUT(1, vec4, _fragColor1); // Normal +OUTPUT(2, vec4, _fragColor2); // scattering / emissive / occlusion +OUTPUT(3, vec4, _fragColor3); // emissive // the alpha threshold const float alphaThreshold = 0.5; diff --git a/libraries/render-utils/src/DeferredTransform.slh b/libraries/render-utils/src/DeferredTransform.slh index 93a3e61c51..d1cf6c97d8 100644 --- a/libraries/render-utils/src/DeferredTransform.slh +++ b/libraries/render-utils/src/DeferredTransform.slh @@ -24,7 +24,7 @@ struct CameraCorrection { mat4 _prevViewInverse; }; -LAYOUT(binding=GPU_BUFFER_CAMERA_CORRECTION) uniform cameraCorrectionBuffer { +UNIFORM_BUFFER(GPU_BUFFER_CAMERA_CORRECTION, cameraCorrectionBuffer) { CameraCorrection cameraCorrection; }; @@ -42,7 +42,7 @@ struct DeferredFrameTransform { mat4 _invProjectionUnJittered[2]; }; -LAYOUT(binding=RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM) uniform deferredFrameTransformBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM, deferredFrameTransformBuffer) { DeferredFrameTransform frameTransform; }; diff --git a/libraries/render-utils/src/Fade.slh b/libraries/render-utils/src/Fade.slh index cd1e06f52e..37c67e1131 100644 --- a/libraries/render-utils/src/Fade.slh +++ b/libraries/render-utils/src/Fade.slh @@ -19,12 +19,12 @@ <@include FadeObjectParams.shared.slh@> // See ShapePipeline::Slot::BUFFER in ShapePipeline.h -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_FADE_PARAMS) uniform fadeParametersBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_FADE_PARAMS, fadeParametersBuffer) { FadeParameters fadeParameters[CATEGORY_COUNT]; }; // See ShapePipeline::Slot::MAP in ShapePipeline.h -LAYOUT(binding=RENDER_UTILS_TEXTURE_FADE_MASK) uniform sampler2D fadeMaskMap; +TEXTURE(RENDER_UTILS_TEXTURE_FADE_MASK, sampler2D, fadeMaskMap); vec3 getNoiseInverseSize(int category) { return fadeParameters[category]._noiseInvSizeAndLevel.xyz; @@ -116,7 +116,7 @@ void applyFade(FadeObjectParams params, vec3 position, out vec3 emissive) { <@func declareFadeFragmentUniform()@> -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS) uniform fadeObjectParametersBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS, fadeObjectParametersBuffer) { FadeObjectParams fadeObjectParams; }; @@ -128,9 +128,9 @@ LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS) uniform fadeObject <@func declareFadeFragmentVertexInput()@> -layout(location=RENDER_UTILS_ATTR_FADE1) in vec4 _fadeData1; -layout(location=RENDER_UTILS_ATTR_FADE2) in vec4 _fadeData2; -layout(location=RENDER_UTILS_ATTR_FADE3) in vec4 _fadeData3; +INPUT(RENDER_UTILS_ATTR_FADE1, vec4, _fadeData1); +INPUT(RENDER_UTILS_ATTR_FADE2, vec4, _fadeData2); +INPUT(RENDER_UTILS_ATTR_FADE3, vec4, _fadeData3); <@endfunc@> @@ -153,9 +153,9 @@ layout(location=RENDER_UTILS_ATTR_FADE3) in vec4 _fadeData3; <@endfunc@> <@func declareFadeVertexInstanced()@> -layout(location=RENDER_UTILS_ATTR_FADE1) out vec4 _fadeData1; -layout(location=RENDER_UTILS_ATTR_FADE2) out vec4 _fadeData2; -layout(location=RENDER_UTILS_ATTR_FADE3) out vec4 _fadeData3; +OUTPUT(RENDER_UTILS_ATTR_FADE1, vec4, _fadeData1); +OUTPUT(RENDER_UTILS_ATTR_FADE2, vec4, _fadeData2); +OUTPUT(RENDER_UTILS_ATTR_FADE3, vec4, _fadeData3); <@endfunc@> <@func passThroughFadeObjectParams()@> diff --git a/libraries/render-utils/src/Haze.slf b/libraries/render-utils/src/Haze.slf index e7c3459f4a..41f723938b 100644 --- a/libraries/render-utils/src/Haze.slf +++ b/libraries/render-utils/src/Haze.slf @@ -23,7 +23,7 @@ <@include graphics/Haze.slh@> <@if not HIFI_USE_BACKGROUND@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH) uniform sampler2D linearDepthMap; +TEXTURE(RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH, sampler2D, linearDepthMap); <@endif@> vec4 unpackPositionFromZeye(vec2 texcoord) { @@ -42,8 +42,8 @@ vec4 unpackPositionFromZeye(vec2 texcoord) { return vec4(evalEyePositionFromZeye(side, Zeye, texcoord), 1.0); } -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { vec4 fragPositionES = unpackPositionFromZeye(varTexCoord0); diff --git a/libraries/render-utils/src/Highlight.slh b/libraries/render-utils/src/Highlight.slh index 85ff352207..dc37e7069e 100644 --- a/libraries/render-utils/src/Highlight.slh +++ b/libraries/render-utils/src/Highlight.slh @@ -15,15 +15,15 @@ <@include Highlight_shared.slh@> -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS) uniform highlightParamsBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS, highlightParamsBuffer) { HighlightParameters params; }; -LAYOUT(binding=RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH) uniform sampler2D sceneDepthMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH) uniform sampler2D highlightedDepthMap; +TEXTURE(RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH, sampler2D, sceneDepthMap); +TEXTURE(RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH, sampler2D, highlightedDepthMap); -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); const float FAR_Z = 1.0; const float OPACITY_EPSILON = 5e-3; diff --git a/libraries/render-utils/src/Highlight_aabox.slv b/libraries/render-utils/src/Highlight_aabox.slv index 65b98355ae..13475ef29f 100644 --- a/libraries/render-utils/src/Highlight_aabox.slv +++ b/libraries/render-utils/src/Highlight_aabox.slv @@ -23,7 +23,7 @@ struct ItemBound { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer ssbo0Buffer; +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_TEXTURE, ssbo0Buffer); ItemBound getItemBound(int i) { int offset = 2 * i; ItemBound bound; @@ -32,7 +32,7 @@ ItemBound getItemBound(int i) { return bound; } #else -LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer { +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_STORAGE, ssbo0Buffer) { ItemBound bounds[]; }; ItemBound getItemBound(int i) { @@ -45,7 +45,7 @@ struct HighlightParameters { vec2 outlineWidth; }; -LAYOUT_STD140(binding=0) uniform parametersBuffer { +UNIFORM_BUFFER(0, parametersBuffer) { HighlightParameters _parameters; }; diff --git a/libraries/render-utils/src/LightAmbient.slh b/libraries/render-utils/src/LightAmbient.slh index 81c672292a..1bf92b02e0 100644 --- a/libraries/render-utils/src/LightAmbient.slh +++ b/libraries/render-utils/src/LightAmbient.slh @@ -10,7 +10,7 @@ <@include render-utils/ShaderConstants.h@> <@func declareSkyboxMap()@> // declareSkyboxMap -LAYOUT(binding=RENDER_UTILS_TEXTURE_SKYBOX) uniform samplerCube skyboxMap; +TEXTURE(RENDER_UTILS_TEXTURE_SKYBOX, samplerCube, skyboxMap); vec4 evalSkyboxLight(vec3 direction, float lod) { // textureQueryLevels is not available until #430, so we require explicit lod diff --git a/libraries/render-utils/src/LightClusterGrid.slh b/libraries/render-utils/src/LightClusterGrid.slh index cd944489ec..cc3a4f16f3 100644 --- a/libraries/render-utils/src/LightClusterGrid.slh +++ b/libraries/render-utils/src/LightClusterGrid.slh @@ -24,7 +24,7 @@ struct FrustumGrid { mat4 eyeToWorldMat; }; -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID) uniform frustumGridBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID, frustumGridBuffer) { FrustumGrid frustumGrid; }; @@ -60,11 +60,11 @@ float projection_getFar(mat4 projection) { #define GRID_FETCH_BUFFER(i) i!> <@endif@> -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID) uniform clusterGridBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID, clusterGridBuffer) { GRID_INDEX_TYPE _clusterGridTable[GRID_NUM_ELEMENTS]; }; -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT) uniform clusterContentBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT, clusterContentBuffer) { GRID_INDEX_TYPE _clusterGridContent[GRID_NUM_ELEMENTS]; }; diff --git a/libraries/render-utils/src/LightingModel.slh b/libraries/render-utils/src/LightingModel.slh index 61c74c7e50..1f7ba3800c 100644 --- a/libraries/render-utils/src/LightingModel.slh +++ b/libraries/render-utils/src/LightingModel.slh @@ -23,7 +23,7 @@ struct LightingModel { }; // See DeferredShader_BufferSlot in DeferredLightingEffect.cpp -LAYOUT(binding=RENDER_UTILS_BUFFER_LIGHT_MODEL) uniform lightingModelBuffer{ +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_MODEL, lightingModelBuffer) { LightingModel lightingModel; }; diff --git a/libraries/render-utils/src/ShadingModel.slh b/libraries/render-utils/src/ShadingModel.slh index 5af986bd9d..27315dbf53 100644 --- a/libraries/render-utils/src/ShadingModel.slh +++ b/libraries/render-utils/src/ShadingModel.slh @@ -15,7 +15,7 @@ <@func declareBeckmannSpecular()@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN) uniform sampler2D scatteringSpecularBeckmann; +TEXTURE(RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN, sampler2D, scatteringSpecularBeckmann); float fetchSpecularBeckmann(float ndoth, float roughness) { return pow(2.0 * texture(scatteringSpecularBeckmann, vec2(ndoth, roughness)).r, 10.0); diff --git a/libraries/render-utils/src/Shadow.slh b/libraries/render-utils/src/Shadow.slh index ac55bc95e5..2081cab0fc 100755 --- a/libraries/render-utils/src/Shadow.slh +++ b/libraries/render-utils/src/Shadow.slh @@ -19,7 +19,7 @@ #define SHADOW_SCREEN_SPACE_DITHER 1 // the shadow texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_SHADOW) uniform sampler2DArrayShadow shadowMaps; +TEXTURE(RENDER_UTILS_TEXTURE_SHADOW, sampler2DArrayShadow, shadowMaps); // Sample the shadowMap with PCF (built-in) float fetchShadow(int cascadeIndex, vec3 shadowTexcoord) { diff --git a/libraries/render-utils/src/ShadowCore.slh b/libraries/render-utils/src/ShadowCore.slh index 9819dac38c..15dd0d91f0 100644 --- a/libraries/render-utils/src/ShadowCore.slh +++ b/libraries/render-utils/src/ShadowCore.slh @@ -13,7 +13,7 @@ <@include Shadows_shared.slh@> -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_SHADOW_PARAMS) uniform shadowTransformBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_SHADOW_PARAMS, shadowTransformBuffer) { ShadowParameters shadow; }; diff --git a/libraries/render-utils/src/Skinning.slh b/libraries/render-utils/src/Skinning.slh index 30d5efd64e..7cd2e0de65 100644 --- a/libraries/render-utils/src/Skinning.slh +++ b/libraries/render-utils/src/Skinning.slh @@ -18,7 +18,7 @@ const int MAX_CLUSTERS = 128; const int INDICES_PER_VERTEX = 4; -LAYOUT_STD140(binding=GRAPHICS_BUFFER_SKINNING) uniform skinClusterBuffer { +UNIFORM_BUFFER(GRAPHICS_BUFFER_SKINNING, skinClusterBuffer) { mat4 clusterMatrices[MAX_CLUSTERS]; }; diff --git a/libraries/render-utils/src/SubsurfaceScattering.slh b/libraries/render-utils/src/SubsurfaceScattering.slh index b4981110f2..be1f5b194f 100644 --- a/libraries/render-utils/src/SubsurfaceScattering.slh +++ b/libraries/render-utils/src/SubsurfaceScattering.slh @@ -56,7 +56,7 @@ vec3 generateProfile(vec2 uv) { <@func declareSubsurfaceScatteringProfileMap()@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_SSSC_PROFILE) uniform sampler2D scatteringProfile; +TEXTURE(RENDER_UTILS_TEXTURE_SSSC_PROFILE, sampler2D, scatteringProfile); vec3 scatter(float r) { return texture(scatteringProfile, vec2(r * 0.5, 0.5)).rgb; @@ -102,7 +102,7 @@ vec3 integrate(float cosTheta, float skinRadius) { <@func declareSubsurfaceScatteringResource()@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_SSSC_LUT) uniform sampler2D scatteringLUT; +TEXTURE(RENDER_UTILS_TEXTURE_SSSC_LUT, sampler2D, scatteringLUT); vec3 fetchBRDF(float LdotN, float curvature) { return texture(scatteringLUT, vec2( clamp(LdotN * 0.5 + 0.5, 0.0, 1.0), clamp(2.0 * curvature, 0.0, 1.0))).xyz; @@ -122,7 +122,7 @@ struct ScatteringParameters { vec4 debugFlags; }; -LAYOUT(binding=RENDER_UTILS_BUFFER_SSSC_PARAMS) uniform subsurfaceScatteringParametersBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_SSSC_PARAMS, subsurfaceScatteringParametersBuffer) { ScatteringParameters parameters; }; diff --git a/libraries/render-utils/src/WorkloadResource.slh b/libraries/render-utils/src/WorkloadResource.slh index 14fa33a12e..0d02c3c6d1 100644 --- a/libraries/render-utils/src/WorkloadResource.slh +++ b/libraries/render-utils/src/WorkloadResource.slh @@ -26,7 +26,7 @@ struct WorkloadProxy { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer workloadProxiesBuffer; +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_TEXTURE, workloadProxiesBuffer) WorkloadProxy getWorkloadProxy(int i) { int offset = 2 * i; WorkloadProxy proxy; @@ -35,7 +35,7 @@ WorkloadProxy getWorkloadProxy(int i) { return proxy; } #else -LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer workloadProxiesBuffer { +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_STORAGE, workloadProxiesBuffer) { WorkloadProxy _proxies[]; }; WorkloadProxy getWorkloadProxy(int i) { @@ -58,7 +58,7 @@ struct WorkloadView { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT1_TEXTURE) uniform samplerBuffer workloadViewsBuffer; +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT1_TEXTURE, workloadViewsBuffer); WorkloadView getWorkloadView(int i) { int offset = 8 * i; WorkloadView view; @@ -73,7 +73,7 @@ WorkloadView getWorkloadView(int i) { return view; } #else -LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT1_STORAGE) buffer workloadViewsBuffer { +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT1_STORAGE, workloadViewsBuffer) { WorkloadView _views[]; }; WorkloadView getWorkloadView(int i) { diff --git a/libraries/render-utils/src/animdebugdraw.slf b/libraries/render-utils/src/animdebugdraw.slf index 1a4b8754b3..ffe23bd240 100644 --- a/libraries/render-utils/src/animdebugdraw.slf +++ b/libraries/render-utils/src/animdebugdraw.slf @@ -12,9 +12,9 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; +INPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); -layout(location=0) out vec4 _fragColor; +OUTPUT(0, vec4, _fragColor); void main(void) { _fragColor = _color; diff --git a/libraries/render-utils/src/animdebugdraw.slv b/libraries/render-utils/src/animdebugdraw.slv index beb4a84700..c57eb7aa4a 100644 --- a/libraries/render-utils/src/animdebugdraw.slv +++ b/libraries/render-utils/src/animdebugdraw.slv @@ -9,8 +9,8 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_COLOR, vec4, inColor); <@include gpu/Color.slh@> <@include gpu/Transform.slh@> @@ -18,7 +18,7 @@ layout(location=GPU_ATTR_COLOR) in vec4 inColor; <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; +OUTPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); void main(void) { // pass along the color diff --git a/libraries/render-utils/src/debug_deferred_buffer.slf b/libraries/render-utils/src/debug_deferred_buffer.slf index ccbe5c491f..28b5afd5fe 100644 --- a/libraries/render-utils/src/debug_deferred_buffer.slf +++ b/libraries/render-utils/src/debug_deferred_buffer.slf @@ -16,8 +16,8 @@ <@include gpu/Color.slh@> <$declareColorWheel()$> -LAYOUT(binding=RENDER_UTILS_DEBUG_TEXTURE0) uniform sampler2D debugTexture0; -LAYOUT(binding=RENDER_UTILS_TEXTURE_SHADOW) uniform sampler2DArrayShadow shadowMaps; +TEXTURE(RENDER_UTILS_DEBUG_TEXTURE0, sampler2D, debugTexture0); +TEXTURE(RENDER_UTILS_TEXTURE_SHADOW, sampler2DArrayShadow, shadowMaps); <@include ShadowCore.slh@> @@ -25,7 +25,7 @@ LAYOUT(binding=RENDER_UTILS_TEXTURE_SHADOW) uniform sampler2DArrayShadow shadowM <@include debug_deferred_buffer_shared.slh@> -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_DEBUG_DEFERRED_PARAMS) uniform parametersBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_DEBUG_DEFERRED_PARAMS, parametersBuffer) { DebugParameters parameters; }; @@ -33,8 +33,8 @@ float curvatureAO(float k) { return 1.0f - (0.0022f * k * k) + (0.0776f * k) + 0.7369f; } -layout(location=0) in vec2 uv; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, uv); +OUTPUT(0, vec4, outFragColor); //SOURCE_PLACEHOLDER_BEGIN vec4 getFragmentColor() { diff --git a/libraries/render-utils/src/debug_deferred_buffer.slv b/libraries/render-utils/src/debug_deferred_buffer.slv index 94462e3430..f639fb58ff 100644 --- a/libraries/render-utils/src/debug_deferred_buffer.slv +++ b/libraries/render-utils/src/debug_deferred_buffer.slv @@ -13,10 +13,10 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); -layout(location=0) out vec2 uv; +OUTPUT(0, vec2, uv); void main(void) { uv = (inPosition.xy + 1.0) * 0.5; diff --git a/libraries/render-utils/src/deferred_light.slv b/libraries/render-utils/src/deferred_light.slv index 2a68aa0e27..51c0fa499a 100644 --- a/libraries/render-utils/src/deferred_light.slv +++ b/libraries/render-utils/src/deferred_light.slv @@ -14,7 +14,7 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); void main(void) { const float depth = 1.0; diff --git a/libraries/render-utils/src/deferred_light_limited.slv b/libraries/render-utils/src/deferred_light_limited.slv index 51bb018ab7..a09c71178f 100644 --- a/libraries/render-utils/src/deferred_light_limited.slv +++ b/libraries/render-utils/src/deferred_light_limited.slv @@ -14,7 +14,7 @@ <@include gpu/Transform.slh@> <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); <@include render-utils/ShaderConstants.h@> @@ -23,7 +23,7 @@ layout(location=GPU_ATTR_POSITION) in vec4 inPosition; // FIXME make into a uniform buffer or push constant if this shader ever comes into use vec4 sphereParam = vec4(0.0); -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); void main(void) { if (sphereParam.w != 0.0) { diff --git a/libraries/render-utils/src/deferred_light_point.slv b/libraries/render-utils/src/deferred_light_point.slv index dbeb7efb11..b055b6e4af 100644 --- a/libraries/render-utils/src/deferred_light_point.slv +++ b/libraries/render-utils/src/deferred_light_point.slv @@ -15,7 +15,7 @@ <@include gpu/Transform.slh@> <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); <@include graphics/Light.slh@> <@include render-utils/ShaderConstants.h@> @@ -24,11 +24,11 @@ layout(location=GPU_ATTR_POSITION) in vec4 inPosition; <$declareLightBuffer(256)$> -LAYOUT(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_INDEX, lightIndexBuffer) { int lightIndex[256]; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord0; +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord0); void main(void) { diff --git a/libraries/render-utils/src/deferred_light_spot.slv b/libraries/render-utils/src/deferred_light_spot.slv index d761061924..4ec329e1f4 100644 --- a/libraries/render-utils/src/deferred_light_spot.slv +++ b/libraries/render-utils/src/deferred_light_spot.slv @@ -13,7 +13,7 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); <@include gpu/Transform.slh@> <@include graphics/Light.slh@> @@ -23,10 +23,10 @@ layout(location=GPU_ATTR_POSITION) in vec4 inPosition; <$declareLightBuffer(256)$> -LAYOUT(binding=RENDER_UTILS_BUFFER_LIGHT_INDEX) uniform lightIndexBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_LIGHT_INDEX, lightIndexBuffer) { int lightIndex[256]; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord0; +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord0); void main(void) { vec4 coneVertex = inPosition; diff --git a/libraries/render-utils/src/directional_skybox_light.slf b/libraries/render-utils/src/directional_skybox_light.slf index 20026283be..951e5c526c 100644 --- a/libraries/render-utils/src/directional_skybox_light.slf +++ b/libraries/render-utils/src/directional_skybox_light.slf @@ -9,6 +9,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // + <@include DeferredBufferRead.slh@> <@include render-utils/ShaderConstants.h@> @@ -23,11 +24,10 @@ <@include Shadow.slh@> <@endif@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw - -layout(location=0) out vec4 _fragColor; +OUTPUT(0, vec4, _fragColor); void main(void) { DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); @@ -43,6 +43,7 @@ void main(void) { float shadowAttenuation = 1.0; <@endif@> + // Light mapped or not ? if (frag.mode == FRAG_MODE_UNLIT || frag.mode == FRAG_MODE_LIGHTMAPPED) { discard; } else { diff --git a/libraries/render-utils/src/drawWorkloadProxy.slf b/libraries/render-utils/src/drawWorkloadProxy.slf index f0bd9d474c..eec479322a 100644 --- a/libraries/render-utils/src/drawWorkloadProxy.slf +++ b/libraries/render-utils/src/drawWorkloadProxy.slf @@ -13,9 +13,9 @@ <@include DeferredBufferWrite.slh@> <@include gpu/Paint.slh@> -layout(location=0) in vec4 varColor; -layout(location=1) in vec3 varTexcoord; -layout(location=2) in vec3 varEyePos; +INPUT(0, vec4, varColor); +INPUT(1, vec3, varTexcoord); +INPUT(2, vec3, varEyePos); void main(void) { if (varColor.w > 0.0) { diff --git a/libraries/render-utils/src/drawWorkloadProxy.slv b/libraries/render-utils/src/drawWorkloadProxy.slv index e485f14a93..ffeffea35a 100644 --- a/libraries/render-utils/src/drawWorkloadProxy.slv +++ b/libraries/render-utils/src/drawWorkloadProxy.slv @@ -19,9 +19,9 @@ <$declareWorkloadProxies()$> -layout(location=0) out vec4 varColor; -layout(location=1) out vec3 varTexcoord; -layout(location=2) out vec3 varEyePos; +OUTPUT(0, vec4, varColor); +OUTPUT(1, vec3, varTexcoord); +OUTPUT(2, vec3, varEyePos); void main(void) { const vec4 UNIT_SPRITE[3] = vec4[3]( diff --git a/libraries/render-utils/src/drawWorkloadView.slf b/libraries/render-utils/src/drawWorkloadView.slf index b638824204..08f200cc00 100644 --- a/libraries/render-utils/src/drawWorkloadView.slf +++ b/libraries/render-utils/src/drawWorkloadView.slf @@ -14,9 +14,9 @@ <@include DeferredBufferWrite.slh@> <@include gpu/Paint.slh@> -layout(location=0) in vec4 varColor; -layout(location=1) in vec3 varTexcoord; -layout(location=2) in vec3 varEyePos; +INPUT(0, vec4, varColor); +INPUT(1, vec3, varTexcoord); +INPUT(2, vec3, varEyePos); void main(void) { if (varColor.w > 0.0) { diff --git a/libraries/render-utils/src/drawWorkloadView.slv b/libraries/render-utils/src/drawWorkloadView.slv index 2fdf3d773e..19467cc675 100644 --- a/libraries/render-utils/src/drawWorkloadView.slv +++ b/libraries/render-utils/src/drawWorkloadView.slv @@ -18,9 +18,9 @@ <@include WorkloadResource.slh@> <$declareWorkloadViews()$> -layout(location=0) out vec4 varColor; -layout(location=1) out vec3 varTexcoord; -layout(location=2) out vec3 varEyePos; +OUTPUT(0, vec4, varColor); +OUTPUT(1, vec3, varTexcoord); +OUTPUT(2, vec3, varEyePos); const int NUM_VERTICES_PER_SEGMENT = 2; const int NUM_SEGMENT_PER_VIEW_REGION = 65; @@ -32,7 +32,7 @@ struct DrawMesh { vec4 verts[NUM_SEGMENT_PER_VIEW_REGION]; }; -LAYOUT_STD140(binding=0) uniform DrawMeshBuffer { +UNIFORM_BUFFER(0, DrawMeshBuffer) { DrawMesh _drawMeshBuffer; }; diff --git a/libraries/render-utils/src/fxaa.slf b/libraries/render-utils/src/fxaa.slf index 1539a87550..76c8acefba 100644 --- a/libraries/render-utils/src/fxaa.slf +++ b/libraries/render-utils/src/fxaa.slf @@ -22,15 +22,15 @@ precision mediump float; precision mediump int; #endif -LAYOUT(binding=0) uniform sampler2D colorTexture; +TEXTURE(0, sampler2D, colorTexture); //uniform sampler2D historyTexture; // FIXME make into a uniform buffer or push constant if this shader ever comes into use vec2 texcoordOffset = vec2(0.0); -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; -//layout(location=0) out vec4 outFragHistory; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); +//OUTPUT(0, vec4, outFragHistory); void main() { outFragColor = vec4(texture(colorTexture, varTexCoord0).xyz, 1.0/8.0); diff --git a/libraries/render-utils/src/fxaa.slv b/libraries/render-utils/src/fxaa.slv index 640f1fcd24..6cfa615dfc 100644 --- a/libraries/render-utils/src/fxaa.slv +++ b/libraries/render-utils/src/fxaa.slv @@ -13,15 +13,15 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Transform.slh@> <$declareStandardTransform()$> -layout(location=0) out vec2 varTexcoord; +OUTPUT(0, vec2, varTexcoord); void main(void) { varTexcoord = inTexCoord0.xy; diff --git a/libraries/render-utils/src/fxaa_blend.slf b/libraries/render-utils/src/fxaa_blend.slf index c22982bc3f..a2d09eb5d6 100644 --- a/libraries/render-utils/src/fxaa_blend.slf +++ b/libraries/render-utils/src/fxaa_blend.slf @@ -14,16 +14,16 @@ <@include gpu/ShaderConstants.h@> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); -LAYOUT(binding=0) uniform sampler2D colorTexture; +TEXTURE(0, sampler2D, colorTexture); struct FxaaBlendParams { vec4 sharpenIntensity; }; -LAYOUT(binding=0) uniform fxaaBlendParamsBuffer { +UNIFORM_BUFFER(0, fxaaBlendParamsBuffer) { FxaaBlendParams params; }; diff --git a/libraries/render-utils/src/grid.slf b/libraries/render-utils/src/grid.slf index 8d54dfef4a..82336f00de 100644 --- a/libraries/render-utils/src/grid.slf +++ b/libraries/render-utils/src/grid.slf @@ -25,12 +25,16 @@ struct Grid { vec4 edge; }; -LAYOUT(binding=0) uniform gridBuffer { - Grid grid; +UNIFORM_BUFFER(0, gridBuffer) { + Grid grid; }; -layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; -layout(location=GPU_ATTR_COLOR) in vec4 varColor; +Grid getGrid() { return grid; } + +INPUT(GPU_ATTR_TEXCOORD0, vec2, varTexCoord0); +INPUT(GPU_ATTR_COLOR, vec4, varColor); + +OUTPUT(0, vec4, outFragColor); void main(void) { float gridLine = mix(paintGridMajorMinor(varTexCoord0, grid.offset, grid.period, grid.edge), diff --git a/libraries/render-utils/src/hmd_ui.slf b/libraries/render-utils/src/hmd_ui.slf index af19ef1c06..c6fa99a35c 100644 --- a/libraries/render-utils/src/hmd_ui.slf +++ b/libraries/render-utils/src/hmd_ui.slf @@ -14,21 +14,21 @@ <@include render-utils/ShaderConstants.h@> <@include gpu/Color.slh@> -LAYOUT(binding=0) uniform sampler2D hudTexture; +TEXTURE(0, sampler2D, hudTexture); struct HUDData { float alpha; }; -LAYOUT_STD140(binding=0) uniform hudBuffer { +UNIFORM_BUFFER(0, hudBuffer) { HUDData hud; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw -layout(location=0) out vec4 fragColor0; +OUTPUT(0, vec4, fragColor0); void main() { vec4 color = texture(hudTexture, _texCoord0); diff --git a/libraries/render-utils/src/hmd_ui.slv b/libraries/render-utils/src/hmd_ui.slv index e16f6deadf..395b749b14 100644 --- a/libraries/render-utils/src/hmd_ui.slv +++ b/libraries/render-utils/src/hmd_ui.slv @@ -13,8 +13,8 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Transform.slh@> <@include render-utils/ShaderConstants.h@> @@ -25,11 +25,11 @@ struct HUDData { float alpha; }; -LAYOUT_STD140(binding=0) uniform hudBuffer { +UNIFORM_BUFFER(0, hudBuffer) { HUDData hud; }; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); void main() { _texCoord01 = vec4(inTexCoord0.st, 0.0, 0.0); diff --git a/libraries/render-utils/src/lightClusters_drawClusterContent.slf b/libraries/render-utils/src/lightClusters_drawClusterContent.slf index 80013bc3cc..fd80493290 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterContent.slf +++ b/libraries/render-utils/src/lightClusters_drawClusterContent.slf @@ -24,8 +24,8 @@ <$declareColorWheel()$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterContent.slv b/libraries/render-utils/src/lightClusters_drawClusterContent.slv index c30252da41..dae0ecfe26 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterContent.slv +++ b/libraries/render-utils/src/lightClusters_drawClusterContent.slv @@ -21,7 +21,7 @@ <$declareColorWheel()$> -layout(location=0) out vec4 varColor; +OUTPUT(0, vec4, varColor); void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf index 0e3f8a5ea5..c26bf03311 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf +++ b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slf @@ -21,8 +21,8 @@ <$declareColorWheel()$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv index a5c037cc7a..15cb72a1f2 100644 --- a/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv +++ b/libraries/render-utils/src/lightClusters_drawClusterFromDepth.slv @@ -23,7 +23,7 @@ -layout(location=0) out vec4 varColor; +OUTPUT(0, vec4, varColor); void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawGrid.slf b/libraries/render-utils/src/lightClusters_drawGrid.slf index 47ed84eeec..88e46279c2 100644 --- a/libraries/render-utils/src/lightClusters_drawGrid.slf +++ b/libraries/render-utils/src/lightClusters_drawGrid.slf @@ -10,8 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec4 varColor; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec4, varColor); +OUTPUT(0, vec4, outFragColor); void main(void) { diff --git a/libraries/render-utils/src/lightClusters_drawGrid.slv b/libraries/render-utils/src/lightClusters_drawGrid.slv index 8d557d01c8..fdc6574705 100644 --- a/libraries/render-utils/src/lightClusters_drawGrid.slv +++ b/libraries/render-utils/src/lightClusters_drawGrid.slv @@ -23,7 +23,7 @@ -layout(location=0) out vec4 varColor; +OUTPUT(0, vec4, varColor); void main(void) { diff --git a/libraries/render-utils/src/local_lights_drawOutline.slf b/libraries/render-utils/src/local_lights_drawOutline.slf index a2b4cc1d10..f048e81889 100644 --- a/libraries/render-utils/src/local_lights_drawOutline.slf +++ b/libraries/render-utils/src/local_lights_drawOutline.slf @@ -33,10 +33,10 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw -layout(location=0) out vec4 _fragColor; +OUTPUT(0, vec4, _fragColor); void main(void) { diff --git a/libraries/render-utils/src/local_lights_shading.slf b/libraries/render-utils/src/local_lights_shading.slf index 538bdacc99..9861f7c3ec 100644 --- a/libraries/render-utils/src/local_lights_shading.slf +++ b/libraries/render-utils/src/local_lights_shading.slf @@ -21,10 +21,10 @@ <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw -layout(location=0) out vec4 _fragColor; +OUTPUT(0, vec4, _fragColor); void main(void) { _fragColor = vec4(0.0); diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 48e483edf7..1472a7ee19 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -75,20 +75,19 @@ <@endif@> <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> - - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@else@> <@include DeferredBufferWrite.slh@> <@endif@> <@else@> <@if HIFI_USE_MIRROR@> <@if HIFI_USE_FORWARD@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@else@> <@include DeferredBufferWrite.slh@> <@endif@> <@else@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@endif@> <@endif@> @@ -101,18 +100,18 @@ <$declareFadeFragment()$> <@endif@> -layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw <@if not HIFI_USE_SHADOW@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; - layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; + INPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); + INPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); <@if not HIFI_USE_MTOON@> - layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; + INPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); <@endif@> <@if HIFI_USE_NORMALMAP@> - layout(location=RENDER_UTILS_ATTR_TANGENT_WS) in vec3 _tangentWS; + INPUT(RENDER_UTILS_ATTR_TANGENT_WS, vec3, _tangentWS); <@endif@> <@endif@> diff --git a/libraries/render-utils/src/model.slv b/libraries/render-utils/src/model.slv index ead55d83fc..7deb55f74d 100644 --- a/libraries/render-utils/src/model.slv +++ b/libraries/render-utils/src/model.slv @@ -12,11 +12,11 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; -layout(location=GPU_ATTR_TEXCOORD1) in vec4 inTexCoord1; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); +INPUT(GPU_ATTR_COLOR, vec4, inColor); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); +INPUT(GPU_ATTR_TEXCOORD1, vec4, inTexCoord1); <@include gpu/Color.slh@> <@include render-utils/ShaderConstants.h@> @@ -49,16 +49,16 @@ layout(location=GPU_ATTR_TEXCOORD1) in vec4 inTexCoord1; <$declareMeshDeformerActivation(1, 1)$> <@endif@> -layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +OUTPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); <@if not HIFI_USE_SHADOW@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; - layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; + OUTPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); + OUTPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); <@if not HIFI_USE_MTOON@> - layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; + OUTPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); <@endif@> <@if HIFI_USE_NORMALMAP@> - layout(location=RENDER_UTILS_ATTR_TANGENT_WS) out vec3 _tangentWS; + OUTPUT(RENDER_UTILS_ATTR_TANGENT_WS, vec3, _tangentWS); <@endif@> <@endif@> diff --git a/libraries/render-utils/src/nop.slf b/libraries/render-utils/src/nop.slf index dd54f839ea..3f9a15d9f3 100644 --- a/libraries/render-utils/src/nop.slf +++ b/libraries/render-utils/src/nop.slf @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) out vec4 _fragColor; +OUTPUT(0, vec4, _fragColor); void main(void) { } diff --git a/libraries/render-utils/src/parabola.slf b/libraries/render-utils/src/parabola.slf index f19f82ec59..4bf518a9d0 100644 --- a/libraries/render-utils/src/parabola.slf +++ b/libraries/render-utils/src/parabola.slf @@ -16,7 +16,7 @@ layout(location=0) out vec4 _fragColor0; <@endif@> -layout(location=0) in vec4 _color; +INPUT(0, vec4, _color); void main(void) { <@if not HIFI_USE_FORWARD@> diff --git a/libraries/render-utils/src/parabola.slv b/libraries/render-utils/src/parabola.slv index 6032452d1d..662f46217e 100644 --- a/libraries/render-utils/src/parabola.slv +++ b/libraries/render-utils/src/parabola.slv @@ -22,11 +22,11 @@ struct ParabolaData { ivec3 spare; }; -LAYOUT_STD140(binding=0) uniform parabolaData { +UNIFORM_BUFFER(0, parabolaData) { ParabolaData _parabolaData; }; -layout(location=0) out vec4 _color; +OUTPUT(0, vec4, _color); void main(void) { _color = _parabolaData.color; diff --git a/libraries/render-utils/src/sdf_text3D.slf b/libraries/render-utils/src/sdf_text3D.slf index f606c1be81..300f1e8a51 100644 --- a/libraries/render-utils/src/sdf_text3D.slf +++ b/libraries/render-utils/src/sdf_text3D.slf @@ -22,7 +22,7 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@else@> <@include DeferredBufferWrite.slh@> <@endif@> @@ -34,13 +34,16 @@ layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec2 _positionMS; <@if HIFI_USE_TRANSLUCENT or HIFI_USE_FORWARD@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; + INPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +// the interpolated normal +INPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw -layout(location=RENDER_UTILS_ATTR_FADE1) flat in vec4 _glyphBounds; // we're reusing the fade texcoord locations here +// TODO: what does flat mean? +//layout(location=RENDER_UTILS_ATTR_FADE1) flat in vec4 _glyphBounds; // we're reusing the fade texcoord locations here +INPUT(RENDER_UTILS_ATTR_FADE1, vec4, _glyphBounds); // we're reusing the fade texcoord locations here <@if HIFI_USE_MIRROR@> <@include graphics/ShaderConstants.h@> diff --git a/libraries/render-utils/src/sdf_text3D.slh b/libraries/render-utils/src/sdf_text3D.slh index 5471415e1c..e80b7af706 100644 --- a/libraries/render-utils/src/sdf_text3D.slh +++ b/libraries/render-utils/src/sdf_text3D.slh @@ -14,7 +14,7 @@ <@if not SDF_TEXT3D_SLH@> <@def SDF_TEXT3D_SLH@> -LAYOUT(binding=0) uniform sampler2D fontTexture; +TEXTURE(0, sampler2D, fontTexture); struct TextParams { vec4 bounds; @@ -29,7 +29,7 @@ struct TextParams { float spare; }; -LAYOUT(binding=0) uniform textParamsBuffer { +UNIFORM_BUFFER(0, textParamsBuffer) { TextParams params; }; diff --git a/libraries/render-utils/src/sdf_text3D.slv b/libraries/render-utils/src/sdf_text3D.slv index dd1752dfa0..0df0f8688b 100644 --- a/libraries/render-utils/src/sdf_text3D.slv +++ b/libraries/render-utils/src/sdf_text3D.slv @@ -11,8 +11,8 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Transform.slh@> <@include render-utils/ShaderConstants.h@> @@ -24,11 +24,13 @@ layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec2 _positionMS; <@if HIFI_USE_TRANSLUCENT or HIFI_USE_FORWARD@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; + OUTPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; -layout(location=RENDER_UTILS_ATTR_FADE1) flat out vec4 _glyphBounds; // we're reusing the fade texcoord locations here +OUTPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); +//TODO: what does flat mean? +//layout(location=RENDER_UTILS_ATTR_FADE1) flat out vec4 _glyphBounds; // we're reusing the fade texcoord locations here +OUTPUT(RENDER_UTILS_ATTR_FADE1, vec4, _glyphBounds); // we're reusing the fade texcoord locations here void main() { _positionMS = inPosition.xy; @@ -54,4 +56,4 @@ void main() { const vec3 normal = vec3(0, 0, 1); <$transformModelToWorldDir(cam, obj, normal, _normalWS)$> -} \ No newline at end of file +} diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index fabe85cb4f..01fc41beaf 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -23,7 +23,7 @@ <@include LightingModel.slh@> <@endif@> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@endif@> <@if not HIFI_USE_UNLIT@> @@ -51,19 +51,19 @@ <@if not HIFI_USE_UNLIT@> <@if HIFI_USE_FORWARD or HIFI_USE_TRANSLUCENT@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; + INPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> <@endif@> <@if HIFI_USE_FADE@> - layout(location=RENDER_UTILS_ATTR_POSITION_WS) in vec4 _positionWS; + INPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); <@endif@> -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); +INPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw -LAYOUT(binding=0) uniform sampler2D simpleTexture; +TEXTURE(0, sampler2D, simpleTexture); void main(void) { vec4 texel = texture(simpleTexture, _texCoord0); diff --git a/libraries/render-utils/src/simple.slv b/libraries/render-utils/src/simple.slv index d1972a07cf..73cedc2974 100644 --- a/libraries/render-utils/src/simple.slv +++ b/libraries/render-utils/src/simple.slv @@ -11,10 +11,10 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); +INPUT(GPU_ATTR_COLOR, vec4, inColor); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Color.slh@> <@include gpu/Transform.slh@> @@ -26,17 +26,17 @@ layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; <@include Fade.slh@> <$declareFadeVertexInstanced()$> - layout(location=RENDER_UTILS_ATTR_POSITION_WS) out vec4 _positionWS; + OUTPUT(RENDER_UTILS_ATTR_POSITION_WS, vec4, _positionWS); <@endif@> <@if not HIFI_USE_UNLIT@> <@if HIFI_USE_FORWARD or HIFI_USE_TRANSLUCENT@> - layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; + OUTPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); <@endif@> <@endif@> -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +OUTPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); +OUTPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); +OUTPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); void main(void) { _color = color_sRGBAToLinear(inColor); @@ -59,4 +59,4 @@ void main(void) { <$passThroughFadeObjectParams()$> <@endif@> <$transformModelToWorldDir(cam, obj, inNormal.xyz, _normalWS)$> -} \ No newline at end of file +} diff --git a/libraries/render-utils/src/simple_procedural.slf b/libraries/render-utils/src/simple_procedural.slf index cc8edbb415..35bd433337 100644 --- a/libraries/render-utils/src/simple_procedural.slf +++ b/libraries/render-utils/src/simple_procedural.slf @@ -18,7 +18,7 @@ <@include GlobalLight.slh@> <$declareEvalGlobalLightingAlphaBlended()$> - layout(location=0) out vec4 _fragColor0; + OUTPUT(0, vec4, _fragColor0); <@endif@> <@include gpu/Transform.slh@> @@ -27,12 +27,12 @@ <@include CullFace.slh@> <@include render-utils/ShaderConstants.h@> -layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; -layout(location=RENDER_UTILS_ATTR_POSITION_ES) in vec4 _positionES; -layout(location=RENDER_UTILS_ATTR_NORMAL_MS) in vec3 _normalMS; -layout(location=RENDER_UTILS_ATTR_NORMAL_WS) in vec3 _normalWS; -layout(location=RENDER_UTILS_ATTR_COLOR) in vec4 _color; -layout(location=RENDER_UTILS_ATTR_TEXCOORD01) in vec4 _texCoord01; +INPUT(RENDER_UTILS_ATTR_POSITION_MS, vec4, _positionMS); +INPUT(RENDER_UTILS_ATTR_POSITION_ES, vec4, _positionES); +INPUT(RENDER_UTILS_ATTR_NORMAL_MS, vec3, _normalMS); +INPUT(RENDER_UTILS_ATTR_NORMAL_WS, vec3, _normalWS); +INPUT(RENDER_UTILS_ATTR_COLOR, vec4, _color); +INPUT(RENDER_UTILS_ATTR_TEXCOORD01, vec4, _texCoord01); #define _texCoord0 _texCoord01.xy #define _texCoord1 _texCoord01.zw diff --git a/libraries/render-utils/src/ssao.slh b/libraries/render-utils/src/ssao.slh index 50d3b31dde..6f948a7d8c 100644 --- a/libraries/render-utils/src/ssao.slh +++ b/libraries/render-utils/src/ssao.slh @@ -59,7 +59,7 @@ float unpackOcclusion(vec4 raw) { <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> -LAYOUT(binding=RENDER_UTILS_BUFFER_SSAO_PARAMS) uniform ambientOcclusionParamsBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_SSAO_PARAMS, ambientOcclusionParamsBuffer) { AmbientOcclusionParams params; }; @@ -248,8 +248,8 @@ vec3 getTapLocationClampedSSAO(int sampleNumber, float spinAngle, float outerRad <@func declareFetchDepthPyramidMap()@> // the depth pyramid texture -LAYOUT(binding=RENDER_UTILS_TEXTURE_SSAO_DEPTH) uniform sampler2D depthPyramidTex; -LAYOUT(binding=RENDER_UTILS_TEXTURE_SSAO_NORMAL) uniform sampler2D normalTex; +TEXTURE(RENDER_UTILS_TEXTURE_SSAO_DEPTH, sampler2D, depthPyramidTex); +TEXTURE(RENDER_UTILS_TEXTURE_SSAO_NORMAL, sampler2D, normalTex); vec2 getFramebufferUVFromSideUV(ivec4 side, vec2 uv) { return mix(uv, vec2((uv.x + float(getStereoSide(side))) * 0.5, uv.y), float(isStereo())); diff --git a/libraries/render-utils/src/ssao_debugOcclusion.slf b/libraries/render-utils/src/ssao_debugOcclusion.slf index 5b2ce4b0b5..771e8b2305 100644 --- a/libraries/render-utils/src/ssao_debugOcclusion.slf +++ b/libraries/render-utils/src/ssao_debugOcclusion.slf @@ -26,7 +26,7 @@ struct DebugParams{ vec4 pixelInfo; }; -LAYOUT(binding=RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS) uniform debugAmbientOcclusionBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS, debugAmbientOcclusionBuffer) { DebugParams debugParams; }; @@ -34,7 +34,7 @@ vec2 getDebugCursorTexcoord(){ return debugParams.pixelInfo.xy; } -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { // Stereo side info based on the real viewport size of this pass diff --git a/libraries/render-utils/src/ssao_makeOcclusion.slf b/libraries/render-utils/src/ssao_makeOcclusion.slf index fdccaecaed..e9b2d2a808 100644 --- a/libraries/render-utils/src/ssao_makeOcclusion.slf +++ b/libraries/render-utils/src/ssao_makeOcclusion.slf @@ -21,9 +21,8 @@ #define SSAO_HBAO_MAX_RADIUS 300.0 -layout(location=0) in vec2 varTexCoord0; - -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { // Pixel being shaded diff --git a/libraries/render-utils/src/ssao_makePyramid.slf b/libraries/render-utils/src/ssao_makePyramid.slf index eae1b853f9..e3b4e1d379 100644 --- a/libraries/render-utils/src/ssao_makePyramid.slf +++ b/libraries/render-utils/src/ssao_makePyramid.slf @@ -14,9 +14,9 @@ <@include ssao.slh@> <$declareAmbientOcclusion()$> -LAYOUT(binding=0) uniform sampler2D depthMap; +TEXTURE(0, sampler2D, depthMap); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/standardDrawTexture.slf b/libraries/render-utils/src/standardDrawTexture.slf index 620c811f75..d307f38807 100644 --- a/libraries/render-utils/src/standardDrawTexture.slf +++ b/libraries/render-utils/src/standardDrawTexture.slf @@ -14,14 +14,14 @@ <@include gpu/ShaderConstants.h@> // the texture -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=GPU_ATTR_POSITION) in vec3 varPosition; -layout(location=GPU_ATTR_NORMAL) in vec3 varNormal; -layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; -layout(location=GPU_ATTR_COLOR) in vec4 varColor; +INPUT(GPU_ATTR_POSITION, vec3, varPosition); +INPUT(GPU_ATTR_NORMAL, vec3, varNormal); +INPUT(GPU_ATTR_TEXCOORD0, vec2, varTexCoord0); +INPUT(GPU_ATTR_COLOR, vec4, varColor); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { vec4 color = texture(colorMap, varTexCoord0); diff --git a/libraries/render-utils/src/standardDrawTextureNoBlend.slf b/libraries/render-utils/src/standardDrawTextureNoBlend.slf index 83915cd856..b53398050d 100644 --- a/libraries/render-utils/src/standardDrawTextureNoBlend.slf +++ b/libraries/render-utils/src/standardDrawTextureNoBlend.slf @@ -14,14 +14,14 @@ <@include gpu/ShaderConstants.h@> // the texture -LAYOUT(binding=0) uniform sampler2D colorMap; +TEXTURE(0, sampler2D, colorMap); -layout(location=GPU_ATTR_POSITION) in vec3 varPosition; -layout(location=GPU_ATTR_NORMAL) in vec3 varNormal; -layout(location=GPU_ATTR_TEXCOORD0) in vec2 varTexCoord0; -layout(location=GPU_ATTR_COLOR) in vec4 varColor; +INPUT(GPU_ATTR_POSITION, vec3, varPosition); +INPUT(GPU_ATTR_NORMAL, vec3, varNormal); +INPUT(GPU_ATTR_TEXCOORD0, vec2, varTexCoord0); +INPUT(GPU_ATTR_COLOR, vec4, varColor); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { vec4 color = texture(colorMap, varTexCoord0); diff --git a/libraries/render-utils/src/standardTransformPNTC.slv b/libraries/render-utils/src/standardTransformPNTC.slv index 5c2cc4dfdf..1c68361c0c 100644 --- a/libraries/render-utils/src/standardTransformPNTC.slv +++ b/libraries/render-utils/src/standardTransformPNTC.slv @@ -13,19 +13,19 @@ // <@include gpu/ShaderConstants.h@> -layout(location=GPU_ATTR_POSITION) in vec4 inPosition; -layout(location=GPU_ATTR_NORMAL) in vec4 inNormal; -layout(location=GPU_ATTR_COLOR) in vec4 inColor; -layout(location=GPU_ATTR_TEXCOORD0) in vec4 inTexCoord0; +INPUT(GPU_ATTR_POSITION, vec4, inPosition); +INPUT(GPU_ATTR_NORMAL, vec4, inNormal); +INPUT(GPU_ATTR_COLOR, vec4, inColor); +INPUT(GPU_ATTR_TEXCOORD0, vec4, inTexCoord0); <@include gpu/Color.slh@> <@include gpu/Transform.slh@> <$declareStandardTransform()$> -layout(location=GPU_ATTR_POSITION) out vec3 varPosition; -layout(location=GPU_ATTR_NORMAL) out vec3 varNormal; -layout(location=GPU_ATTR_TEXCOORD0) out vec2 varTexCoord0; -layout(location=GPU_ATTR_COLOR) out vec4 varColor; +OUTPUT(GPU_ATTR_POSITION, vec3, varPosition); +OUTPUT(GPU_ATTR_NORMAL, vec3, varNormal); +OUTPUT(GPU_ATTR_TEXCOORD0, vec2, varTexCoord0); +OUTPUT(GPU_ATTR_COLOR, vec4, varColor); void main(void) { varTexCoord0 = inTexCoord0.st; diff --git a/libraries/render-utils/src/stencil_drawMask.slf b/libraries/render-utils/src/stencil_drawMask.slf index 2ae5853960..f739e7ebce 100644 --- a/libraries/render-utils/src/stencil_drawMask.slf +++ b/libraries/render-utils/src/stencil_drawMask.slf @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); float aspectRatio = 0.95; diff --git a/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf b/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf index ac5907803c..abe72e39d9 100644 --- a/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf +++ b/libraries/render-utils/src/subsurfaceScattering_drawScattering.slf @@ -23,15 +23,15 @@ <@include SubsurfaceScattering.slh@> <$declareSubsurfaceScatteringBRDF()$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); struct SSSDebugParams { vec4 cursorTexCoordSpare2; }; // Deferred frame transform uses slot 0 -LAYOUT_STD140(binding=1) uniform sssDebugParamsBuffer { +UNIFORM_BUFFER(1, sssDebugParamsBuffer) { SSSDebugParams sssDebugParams; }; diff --git a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf index 6e10861875..e153255e0a 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeLUT.slf @@ -15,8 +15,8 @@ <$declareSubsurfaceScatteringProfileSource()$> <$declareSubsurfaceScatteringIntegrate(2000)$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { diff --git a/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf b/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf index 31122dcb1f..db8c85fb78 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeProfile.slf @@ -14,8 +14,8 @@ <@include SubsurfaceScattering.slh@> <$declareSubsurfaceScatteringGenerateProfileMap()$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = vec4(generateProfile(varTexCoord0.xy), 1.0); diff --git a/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf b/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf index 59e73100dd..697c50eb89 100644 --- a/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf +++ b/libraries/render-utils/src/subsurfaceScattering_makeSpecularBeckmann.slf @@ -13,8 +13,8 @@ -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); float specularBeckmann(float ndoth, float roughness) { float alpha = acos(ndoth); diff --git a/libraries/render-utils/src/surfaceGeometry_copyDepth.slf b/libraries/render-utils/src/surfaceGeometry_copyDepth.slf index efff6e913c..230d2c181d 100644 --- a/libraries/render-utils/src/surfaceGeometry_copyDepth.slf +++ b/libraries/render-utils/src/surfaceGeometry_copyDepth.slf @@ -11,9 +11,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -LAYOUT(binding=0) uniform sampler2D depthMap; +TEXTURE(0, sampler2D, depthMap); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf b/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf index 6759e21459..5c3abd20aa 100644 --- a/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf +++ b/libraries/render-utils/src/surfaceGeometry_downsampleDepthNormal.slf @@ -15,13 +15,13 @@ <@include gpu/PackedNormal.slh@> <@include render-utils/ShaderConstants.h@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D linearDepthMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_SG_NORMAL) uniform sampler2D normalMap; +TEXTURE(RENDER_UTILS_TEXTURE_SG_DEPTH, sampler2D, linearDepthMap); +TEXTURE(RENDER_UTILS_TEXTURE_SG_NORMAL, sampler2D, normalMap); -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outLinearDepth; -layout(location=1) out vec4 outNormal; +OUTPUT(0, vec4, outLinearDepth); +OUTPUT(1, vec4, outNormal); void main(void) { // Gather 2 by 2 quads from texture and downsample diff --git a/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf b/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf index dd9b98b5e5..084569d2a1 100644 --- a/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf +++ b/libraries/render-utils/src/surfaceGeometry_makeCurvature.slf @@ -25,7 +25,7 @@ struct SurfaceGeometryParams { vec4 curvatureInfo; }; -LAYOUT(binding= RENDER_UTILS_BUFFER_SG_PARAMS) uniform surfaceGeometryParamsBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_SG_PARAMS, surfaceGeometryParamsBuffer) { SurfaceGeometryParams params; }; @@ -46,7 +46,7 @@ bool isFullResolution() { } -LAYOUT(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D linearDepthMap; +TEXTURE(RENDER_UTILS_TEXTURE_SG_DEPTH, sampler2D, linearDepthMap); float getZEye(ivec2 pixel) { return -texelFetch(linearDepthMap, pixel, 0).x; @@ -59,7 +59,7 @@ vec2 sideToFrameTexcoord(vec2 side, vec2 texcoordPos) { return vec2((texcoordPos.x + side.x) * side.y, texcoordPos.y); } -LAYOUT(binding=RENDER_UTILS_TEXTURE_SG_NORMAL) uniform sampler2D normalMap; +TEXTURE(RENDER_UTILS_TEXTURE_SG_NORMAL, sampler2D, normalMap); vec3 getRawNormal(vec2 texcoord) { return texture(normalMap, texcoord).xyz; @@ -80,8 +80,8 @@ float getEyeDepthDiff(vec2 texcoord, vec2 delta) { -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { // Pixel being shaded diff --git a/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf b/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf index fe0c320d1b..9a6a3291ec 100644 --- a/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf +++ b/libraries/render-utils/src/surfaceGeometry_makeLinearDepth.slf @@ -16,9 +16,9 @@ <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> -LAYOUT(binding=RENDER_UTILS_TEXTURE_SG_DEPTH) uniform sampler2D depthMap; +TEXTURE(RENDER_UTILS_TEXTURE_SG_DEPTH, sampler2D, depthMap); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { float Zdb = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x; diff --git a/libraries/render-utils/src/taa.slf b/libraries/render-utils/src/taa.slf index 25320179f5..6661da6fd2 100644 --- a/libraries/render-utils/src/taa.slf +++ b/libraries/render-utils/src/taa.slf @@ -15,8 +15,8 @@ <@include taa.slh@> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main() { vec2 fragUV = varTexCoord0; diff --git a/libraries/render-utils/src/taa.slh b/libraries/render-utils/src/taa.slh index ed9162516e..05a9225b37 100644 --- a/libraries/render-utils/src/taa.slh +++ b/libraries/render-utils/src/taa.slh @@ -16,11 +16,11 @@ <@include render-utils/ShaderConstants.h@> <@include gpu/Color.slh@> -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_HISTORY) uniform sampler2D historyMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_SOURCE) uniform sampler2D sourceMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_VELOCITY) uniform sampler2D velocityMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_DEPTH) uniform sampler2D depthMap; -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_NEXT) uniform sampler2D nextMap; +TEXTURE(RENDER_UTILS_TEXTURE_TAA_HISTORY, sampler2D, historyMap); +TEXTURE(RENDER_UTILS_TEXTURE_TAA_SOURCE, sampler2D, sourceMap); +TEXTURE(RENDER_UTILS_TEXTURE_TAA_VELOCITY, sampler2D, velocityMap); +TEXTURE(RENDER_UTILS_TEXTURE_TAA_DEPTH, sampler2D, depthMap); +TEXTURE(RENDER_UTILS_TEXTURE_TAA_NEXT, sampler2D, nextMap); struct TAAParams { @@ -33,7 +33,7 @@ struct TAAParams vec4 regionInfo; }; -LAYOUT_STD140(binding=RENDER_UTILS_BUFFER_TAA_PARAMS) uniform taaParamsBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_TAA_PARAMS, taaParamsBuffer) { TAAParams params; }; diff --git a/libraries/render-utils/src/taa_blend.slf b/libraries/render-utils/src/taa_blend.slf index 0999b2482f..bbf2b95173 100644 --- a/libraries/render-utils/src/taa_blend.slf +++ b/libraries/render-utils/src/taa_blend.slf @@ -14,8 +14,8 @@ <@include taa.slh@> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { vec3 nextColor = texture(nextMap, varTexCoord0).xyz; diff --git a/libraries/render-utils/src/toneMapping.slf b/libraries/render-utils/src/toneMapping.slf index 0c336c8563..6a0d9e407b 100644 --- a/libraries/render-utils/src/toneMapping.slf +++ b/libraries/render-utils/src/toneMapping.slf @@ -27,7 +27,7 @@ const int ToneCurveGamma22 = 1; const int ToneCurveReinhard = 2; const int ToneCurveFilmic = 3; -LAYOUT(binding=RENDER_UTILS_BUFFER_TM_PARAMS) uniform toneMappingParamsBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_TM_PARAMS, toneMappingParamsBuffer) { ToneMappingParams params; }; float getTwoPowExposure() { @@ -37,10 +37,10 @@ int getToneCurve() { return params._toneCurve; } -LAYOUT(binding=RENDER_UTILS_TEXTURE_TM_COLOR) uniform sampler2D colorMap; +TEXTURE(RENDER_UTILS_TEXTURE_TM_COLOR, sampler2D, colorMap); -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { <@if HIFI_USE_MIRRORED@> diff --git a/libraries/render-utils/src/velocityBuffer_cameraMotion.slf b/libraries/render-utils/src/velocityBuffer_cameraMotion.slf index 0ec63a7b1d..43c5eb27de 100644 --- a/libraries/render-utils/src/velocityBuffer_cameraMotion.slf +++ b/libraries/render-utils/src/velocityBuffer_cameraMotion.slf @@ -14,10 +14,10 @@ <@include DeferredTransform.slh@> <$declareDeferredFrameTransform()$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); -LAYOUT(binding=RENDER_UTILS_TEXTURE_TAA_DEPTH) uniform sampler2D depthMap; +TEXTURE(RENDER_UTILS_TEXTURE_TAA_DEPTH, sampler2D, depthMap); void main(void) { diff --git a/libraries/render-utils/src/zone_drawAmbient.slf b/libraries/render-utils/src/zone_drawAmbient.slf index 07eab08a35..e30e0467d4 100644 --- a/libraries/render-utils/src/zone_drawAmbient.slf +++ b/libraries/render-utils/src/zone_drawAmbient.slf @@ -20,8 +20,8 @@ <$declareLightingAmbient(_SCRIBE_NULL, 1, _SCRIBE_NULL, _SCRIBE_NULL)$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); void main(void) { diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index 7174914ed8..a336aa07c3 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -18,8 +18,8 @@ <@include LightDirectional.slh@> <$declareLightingDirectional(_SCRIBE_NULL)$> -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); void main(void) { diff --git a/libraries/render-utils/src/zone_drawSkybox.slf b/libraries/render-utils/src/zone_drawSkybox.slf index 743b48d0bf..c280118edb 100644 --- a/libraries/render-utils/src/zone_drawSkybox.slf +++ b/libraries/render-utils/src/zone_drawSkybox.slf @@ -12,18 +12,18 @@ <@include render-utils/ShaderConstants.h@> // FIXME use declareSkyboxMap from LightAmbient.slh? -LAYOUT(binding=RENDER_UTILS_TEXTURE_SKYBOX) uniform samplerCube skyboxMap; +TEXTURE(RENDER_UTILS_TEXTURE_SKYBOX, samplerCube, skyboxMap); struct Skybox { vec4 color; }; -LAYOUT(binding=RENDER_UTILS_BUFFER_DEBUG_SKYBOX) uniform skyboxBuffer { +UNIFORM_BUFFER(RENDER_UTILS_BUFFER_DEBUG_SKYBOX, skyboxBuffer) { Skybox skybox; }; -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 _fragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, _fragColor); void main(void) { <$evalGlobeWidget()$> diff --git a/libraries/render/src/render/BlurTask.slh b/libraries/render/src/render/BlurTask.slh index ff4e76a429..266b0432af 100644 --- a/libraries/render/src/render/BlurTask.slh +++ b/libraries/render/src/render/BlurTask.slh @@ -21,7 +21,7 @@ struct BlurParameters { vec2 taps[BLUR_MAX_NUM_TAPS]; }; -LAYOUT(binding=0) uniform blurParamsBuffer { +UNIFORM_BUFFER(0, blurParamsBuffer) { BlurParameters parameters; }; @@ -76,7 +76,7 @@ float getPosLinearDepthFar() { <$declareBlurUniforms()$> -LAYOUT(binding=0) uniform sampler2D sourceMap; +TEXTURE(0, sampler2D, sourceMap); vec4 pixelShaderGaussian(vec2 texcoord, vec2 direction, vec2 pixelStep) { texcoord = evalTexcoordTransformed(texcoord); @@ -113,8 +113,8 @@ vec4 pixelShaderGaussian(vec2 texcoord, vec2 direction, vec2 pixelStep) { <$declareBlurUniforms()$> -LAYOUT(binding=0) uniform sampler2D sourceMap; -LAYOUT(binding=1) uniform sampler2D depthMap; +TEXTURE(0, sampler2D, sourceMap); +TEXTURE(1, sampler2D, depthMap); vec4 pixelShaderGaussianDepthAware(vec2 texcoord, vec2 direction, vec2 pixelStep) { texcoord = evalTexcoordTransformed(texcoord); diff --git a/libraries/render/src/render/blurGaussianDepthAwareH.slf b/libraries/render/src/render/blurGaussianDepthAwareH.slf index 04894e3d51..fdaef290df 100644 --- a/libraries/render/src/render/blurGaussianDepthAwareH.slf +++ b/libraries/render/src/render/blurGaussianDepthAwareH.slf @@ -14,9 +14,9 @@ <@include BlurTask.slh@> <$declareBlurGaussianDepthAware()$> -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = pixelShaderGaussianDepthAware(varTexCoord0, vec2(1.0, 0.0), getInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianDepthAwareV.slf b/libraries/render/src/render/blurGaussianDepthAwareV.slf index 129f9f7ce3..e95dfc9025 100644 --- a/libraries/render/src/render/blurGaussianDepthAwareV.slf +++ b/libraries/render/src/render/blurGaussianDepthAwareV.slf @@ -14,9 +14,9 @@ <@include BlurTask.slh@> <$declareBlurGaussianDepthAware()$> -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = pixelShaderGaussianDepthAware(varTexCoord0, vec2(0.0, 1.0), getInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianH.slf b/libraries/render/src/render/blurGaussianH.slf index 251ef158f2..7525b5148f 100644 --- a/libraries/render/src/render/blurGaussianH.slf +++ b/libraries/render/src/render/blurGaussianH.slf @@ -15,9 +15,9 @@ <$declareBlurGaussian()$> -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = pixelShaderGaussian(varTexCoord0, vec2(1.0, 0.0), getInvWidthHeight()); diff --git a/libraries/render/src/render/blurGaussianV.slf b/libraries/render/src/render/blurGaussianV.slf index c1215e8553..24a54c290c 100644 --- a/libraries/render/src/render/blurGaussianV.slf +++ b/libraries/render/src/render/blurGaussianV.slf @@ -14,9 +14,9 @@ <$declareBlurGaussian()$> -layout(location=0) in vec2 varTexCoord0; +INPUT(0, vec2, varTexCoord0); -layout(location=0) out vec4 outFragColor; +OUTPUT(0, vec4, outFragColor); void main(void) { outFragColor = pixelShaderGaussian(varTexCoord0, vec2(0.0, 1.0), getInvWidthHeight()); diff --git a/libraries/render/src/render/drawCellBounds.slf b/libraries/render/src/render/drawCellBounds.slf index 410f0f5d78..948c98590d 100644 --- a/libraries/render/src/render/drawCellBounds.slf +++ b/libraries/render/src/render/drawCellBounds.slf @@ -11,8 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec4 varColor; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec4, varColor); +OUTPUT(0, vec4, outFragColor); void main(void) { diff --git a/libraries/render/src/render/drawCellBounds.slv b/libraries/render/src/render/drawCellBounds.slv index 216f1ea299..7695508b44 100644 --- a/libraries/render/src/render/drawCellBounds.slv +++ b/libraries/render/src/render/drawCellBounds.slv @@ -20,8 +20,8 @@ <$declareColorWheel()$> <@include SceneOctree.slh@> -layout(location=0) in ivec4 inCellLocation; -layout(location=0) out vec4 varColor; +INPUT(0, ivec4, inCellLocation); +OUTPUT(0, vec4, varColor); void main(void) { const vec4 UNIT_BOX[8] = vec4[8]( diff --git a/libraries/render/src/render/drawItemBounds.slf b/libraries/render/src/render/drawItemBounds.slf index 0fed67beb6..36dfc5584c 100644 --- a/libraries/render/src/render/drawItemBounds.slf +++ b/libraries/render/src/render/drawItemBounds.slf @@ -11,9 +11,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec4 varColor; -layout(location=1) in vec2 varTexcoord; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec4, varColor); +INPUT(1, vec2, varTexcoord); +OUTPUT(0, vec4, outFragColor); void main(void) { float var = step(fract(varTexcoord.x * varTexcoord.y * 1.0), 0.5); diff --git a/libraries/render/src/render/drawItemBounds.slv b/libraries/render/src/render/drawItemBounds.slv index 32cfe1c131..31f75ea284 100644 --- a/libraries/render/src/render/drawItemBounds.slv +++ b/libraries/render/src/render/drawItemBounds.slv @@ -24,7 +24,7 @@ struct DrawItemBoundsParams { vec4 color; }; -LAYOUT(binding=0) uniform drawItemBoundsParamsBuffer { +UNIFORM_BUFFER(0, drawItemBoundsParamsBuffer) { DrawItemBoundsParams params; }; @@ -35,7 +35,7 @@ struct ItemBound { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer ssbo0Buffer; +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_TEXTURE, ssbo0Buffer); ItemBound getItemBound(int i) { int offset = 2 * i; ItemBound bound; @@ -44,7 +44,7 @@ ItemBound getItemBound(int i) { return bound; } #else -LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer { +RESOURCE_BUFFER(GPU_RESOURCE_BUFFER_SLOT0_STORAGE, ssbo0Buffer) { ItemBound bounds[]; }; ItemBound getItemBound(int i) { @@ -53,8 +53,8 @@ ItemBound getItemBound(int i) { } #endif -layout(location=0) out vec4 varColor; -layout(location=1) out vec2 varTexcoord; +OUTPUT(0, vec4, varColor); +OUTPUT(1, vec2, varTexcoord); void main(void) { const vec4 UNIT_BOX[8] = vec4[8]( diff --git a/libraries/render/src/render/drawItemStatus.slf b/libraries/render/src/render/drawItemStatus.slf index ca7f2273cd..1d664c713d 100644 --- a/libraries/render/src/render/drawItemStatus.slf +++ b/libraries/render/src/render/drawItemStatus.slf @@ -11,11 +11,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec4 varColor; -layout(location=1) in vec3 varTexcoord; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec4, varColor); +INPUT(1, vec3, varTexcoord); +OUTPUT(0, vec4, outFragColor); -LAYOUT(binding=0) uniform sampler2D _icons; +TEXTURE(0, sampler2D, _icons); vec2 getIconTexcoord(float icon, vec2 uv) { const vec2 ICON_COORD_SIZE = vec2(0.0625, 1.0); return vec2((uv.x + icon) * ICON_COORD_SIZE.x, uv.y * ICON_COORD_SIZE.y); diff --git a/libraries/render/src/render/drawItemStatus.slv b/libraries/render/src/render/drawItemStatus.slv index 7aac26fe2e..b9d2bfedb0 100644 --- a/libraries/render/src/render/drawItemStatus.slv +++ b/libraries/render/src/render/drawItemStatus.slv @@ -17,13 +17,13 @@ <$declareStandardTransform()$> -layout(location=0) out vec4 varColor; -layout(location=1) out vec3 varTexcoord; +OUTPUT(0, vec4, varColor); +OUTPUT(1, vec3, varTexcoord); -layout(location=0) in vec3 inBoundPos; -layout(location=1) in vec3 inBoundDim; -layout(location=2) in ivec4 inStatus0; -layout(location=3) in ivec4 inStatus1; +INPUT(0, vec3, inBoundPos); +INPUT(1, vec3, inBoundDim); +INPUT(2, ivec4, inStatus0); +INPUT(3, ivec4, inStatus1); vec3 paintRainbow(float normalizedHue) { float v = normalizedHue * 6.f; diff --git a/libraries/render/src/render/drawLODReticle.slf b/libraries/render/src/render/drawLODReticle.slf index 61d0cf32fb..389ba61c68 100644 --- a/libraries/render/src/render/drawLODReticle.slf +++ b/libraries/render/src/render/drawLODReticle.slf @@ -11,8 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -layout(location=0) in vec2 varTexCoord0; -layout(location=0) out vec4 outFragColor; +INPUT(0, vec2, varTexCoord0); +OUTPUT(0, vec4, outFragColor); void main(void) { vec2 circlePos = 2.0 * ( varTexCoord0.xy * 2.0 - vec2(1.0) ); diff --git a/libraries/shaders/headers/310es/header.glsl b/libraries/shaders/headers/310es/header.glsl deleted file mode 100644 index a21b2ec5d6..0000000000 --- a/libraries/shaders/headers/310es/header.glsl +++ /dev/null @@ -1,16 +0,0 @@ -#define BITFIELD highp int -#define LAYOUT(X) layout(X) -#define LAYOUT_STD140(X) layout(std140, X) -#ifdef VULKAN - #define gl_InstanceID gl_InstanceIndex - #define gl_VertexID gl_VertexIndex -#endif -#extension GL_EXT_texture_buffer : enable -#if defined(HAVE_EXT_clip_cull_distance) && !defined(VULKAN) -#extension GL_EXT_clip_cull_distance : enable -#endif -precision highp float; -precision highp samplerBuffer; -precision highp sampler2DShadow; -precision highp sampler2DArrayShadow; -precision lowp sampler2DArray; diff --git a/libraries/shaders/headers/320es/header.glsl b/libraries/shaders/headers/320es/header.glsl new file mode 100644 index 0000000000..1c79dadffe --- /dev/null +++ b/libraries/shaders/headers/320es/header.glsl @@ -0,0 +1,25 @@ +#define BITFIELD highp int + +#extension GL_EXT_texture_buffer : enable + +#if defined(HAVE_EXT_clip_cull_distance) && !defined(VULKAN) +#extension GL_EXT_clip_cull_distance : enable +#endif + +#ifdef VULKAN + #define gl_InstanceID gl_InstanceIndex + #define gl_VertexID gl_VertexIndex +#endif + +#define UNIFORM_BUFFER(SLOT, NAME) layout(std140, binding=SLOT) uniform NAME +#define TEXTURE(SLOT, TYPE, NAME) layout(binding=SLOT) uniform TYPE NAME +#define RESOURCE_BUFFER(SLOT, NAME) layout(binding=SLOT) uniform samplerBuffer NAME +#define INPUT(SLOT, TYPE, NAME) layout(location=SLOT) in TYPE NAME +#define OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) out TYPE NAME +#define FLAT_INPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat in TYPE NAME +#define FLAT_OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat out TYPE NAME + +precision highp float; +precision highp samplerBuffer; +precision highp sampler2DShadow; +precision highp sampler2DArrayShadow; diff --git a/libraries/shaders/headers/410/header.glsl b/libraries/shaders/headers/410/header.glsl index 20bd6b2505..eb1163d65c 100644 --- a/libraries/shaders/headers/410/header.glsl +++ b/libraries/shaders/headers/410/header.glsl @@ -1,13 +1,19 @@ #define BITFIELD int + #if defined(VULKAN) - #extension GL_ARB_shading_language_420pack : require - #define LAYOUT(X) layout(X) - #define LAYOUT_STD140(X) layout(std140, X) + #define gl_InstanceID gl_InstanceIndex + #define gl_VertexID gl_VertexIndex + #extension GL_ARB_shading_language_420pack : require + #define UNIFORM_BUFFER(SLOT, NAME) layout(std140, binding=SLOT) uniform NAME + #define TEXTURE(SLOT, TYPE, NAME) layout(binding=SLOT) uniform TYPE NAME + #define RESOURCE_BUFFER(SLOT, NAME) layout(binding=SLOT) uniform samplerBuffer NAME #else - #define LAYOUT(X) - #define LAYOUT_STD140(X) layout(std140) -#endif -#ifdef VULKAN -#define gl_InstanceID gl_InstanceIndex -#define gl_VertexID gl_VertexIndex + #define UNIFORM_BUFFER(SLOT, NAME) layout(std140) uniform NAME + #define TEXTURE(SLOT, TYPE, NAME) uniform TYPE NAME + #define RESOURCE_BUFFER(SLOT, NAME) uniform samplerBuffer NAME #endif + +#define INPUT(SLOT, TYPE, NAME) layout(location=SLOT) in TYPE NAME +#define OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) out TYPE NAME +#define FLAT_INPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat in TYPE NAME +#define FLAT_OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat out TYPE NAME diff --git a/libraries/shaders/headers/450/header.glsl b/libraries/shaders/headers/450/header.glsl index ef0ec09414..b0f3625082 100644 --- a/libraries/shaders/headers/450/header.glsl +++ b/libraries/shaders/headers/450/header.glsl @@ -3,6 +3,18 @@ #define LAYOUT(X) layout(X) #define LAYOUT_STD140(X) layout(std140, X) #ifdef VULKAN -#define gl_InstanceID gl_InstanceIndex -#define gl_VertexID gl_VertexIndex + #define gl_InstanceID gl_InstanceIndex + #define gl_VertexID gl_VertexIndex + #define UNIFORM_BUFFER(SLOT, NAME) layout(std140, set=0, binding=SLOT) uniform NAME + #define TEXTURE(SLOT, TYPE, NAME) layout(set=1, binding=SLOT) uniform TYPE NAME + #define RESOURCE_BUFFER(SLOT, NAME) layout(set=2, binding=SLOT) buffer NAME +#else + #define UNIFORM_BUFFER(SLOT, NAME) layout(std140, binding=SLOT) uniform NAME + #define TEXTURE(SLOT, TYPE, NAME) layout(binding=SLOT) uniform TYPE NAME + #define RESOURCE_BUFFER(SLOT, NAME) layout(binding=SLOT) buffer NAME #endif + +#define INPUT(SLOT, TYPE, NAME) layout(location=SLOT) in TYPE NAME +#define OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) out TYPE NAME +#define FLAT_INPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat in TYPE NAME +#define FLAT_OUTPUT(SLOT, TYPE, NAME) layout(location=SLOT) flat out TYPE NAME diff --git a/libraries/shaders/src/shaders/Shaders.cpp b/libraries/shaders/src/shaders/Shaders.cpp index f98b82ee22..8b79423857 100644 --- a/libraries/shaders/src/shaders/Shaders.cpp +++ b/libraries/shaders/src/shaders/Shaders.cpp @@ -31,32 +31,17 @@ static void initShadersResources() { namespace shader { #if defined(USE_GLES) - -const Dialect DEFAULT_DIALECT = Dialect::glsl310es; - -const std::vector& allDialects() { - static const std::vector ALL_DIALECTS{ Dialect::glsl310es }; - return ALL_DIALECTS; -} - -#elif defined(Q_OS_MAC) - -const Dialect DEFAULT_DIALECT = Dialect::glsl410; - -const std::vector& allDialects() { - static const std::vector ALL_DIALECTS{ Dialect::glsl410 }; - return ALL_DIALECTS; -} - +static const Dialect DEFAULT_DIALECT = Dialect::glsl320es; +#elif defined(Q_OS_MAC) +static const Dialect DEFAULT_DIALECT = Dialect::glsl410; #else +static const Dialect DEFAULT_DIALECT = Dialect::glsl450; +#endif -const Dialect DEFAULT_DIALECT = Dialect::glsl450; - -const std::vector & allDialects() { - static const std::vector ALL_DIALECTS{ { Dialect::glsl450, Dialect::glsl410 } }; +const std::vector& allDialects() { + static const std::vector ALL_DIALECTS{ { DEFAULT_DIALECT } }; return ALL_DIALECTS; } -#endif const std::vector& allVariants() { static const std::vector ALL_VARIANTS{ { Variant::Mono, Variant::Stereo } }; @@ -64,19 +49,27 @@ const std::vector& allVariants() { } const std::string& dialectPath(Dialect dialect) { - static const std::string e310esPath { "/310es/" }; - static const std::string e410Path { "/410/" }; - static const std::string e450Path { "/450/" }; - switch (dialect) { -#if defined(USE_GLES) - case Dialect::glsl310es: return e310esPath; +#if defined(USE_GLES) + static const std::string e320esPath{ "/320es/" }; +#elif defined(Q_OS_MAC) + static const std::string e410Path{ "/410/" }; #else -#if !defined(Q_OS_MAC) - case Dialect::glsl450: return e450Path; + static const std::string e450Path{ "/450/" }; #endif - case Dialect::glsl410: return e410Path; + + switch (dialect) { +#if defined(USE_GLES) + case Dialect::glsl320es: + return e320esPath; +#elif defined(Q_OS_MAC) + case Dialect::glsl410: + return e410Path; +#else + case Dialect::glsl450: + return e450Path; #endif - default: break; + default: + break; } throw std::runtime_error("Invalid dialect"); } @@ -165,8 +158,8 @@ bool Source::doReplacement(String& source) const { for (const auto& entry : replacements) { const auto& key = entry.first; // First try search for a block to replace - // Blocks are required because oftentimes we need a stub function - // in the original source code to allow it to compile. As such we + // Blocks are required because oftentimes we need a stub function + // in the original source code to allow it to compile. As such we // need to replace the stub with our own code rather than just inject // some code. const auto beginMarker = key + "_BEGIN"; @@ -211,7 +204,6 @@ const DialectVariantSource& Source::getDialectVariantSource(Dialect dialect, Var return variantEntry->second; } - String Source::getSource(Dialect dialect, Variant variant) const { String result; const auto& variantSource = getDialectVariantSource(dialect, variant); @@ -304,7 +296,7 @@ void Reflection::parse(const std::string& jsonString) { if (!resourceBuffers.empty()) { throw std::runtime_error("Input shader has both SSBOs and texture buffers defined"); } - for (const auto& bufferTexture : bufferTextures){ + for (const auto& bufferTexture : bufferTextures) { resourceBuffers[bufferTexture] = textures[bufferTexture]; textures.erase(bufferTexture); } diff --git a/tests/shaders/src/ShaderTests.cpp b/tests/shaders/src/ShaderTests.cpp index e6a4e35c83..60b94d21c8 100644 --- a/tests/shaders/src/ShaderTests.cpp +++ b/tests/shaders/src/ShaderTests.cpp @@ -17,6 +17,7 @@ #include #include +#include #include @@ -380,38 +381,38 @@ void rebuildSource(shader::Dialect dialect, shader::Variant variant, const shade throw std::runtime_error("Wrong"); } - // Output the SPIR-V code from the shader program - std::vector spirv; - glslang::GlslangToSpv(*program.getIntermediate(stage), spirv); + // Output the SPIR-V code from the shader program + std::vector spirv; + glslang::GlslangToSpv(*program.getIntermediate(stage), spirv); - spvtools::SpirvTools core(SPV_ENV_VULKAN_1_1); - spvtools::Optimizer opt(SPV_ENV_VULKAN_1_1); + spvtools::SpirvTools core(SPV_ENV_VULKAN_1_1); + spvtools::Optimizer opt(SPV_ENV_VULKAN_1_1); - auto outputLambda = [](spv_message_level_t, const char*, const spv_position_t&, const char* m) { qWarning() << m; }; - core.SetMessageConsumer(outputLambda); - opt.SetMessageConsumer(outputLambda); + auto outputLambda = [](spv_message_level_t, const char*, const spv_position_t&, const char* m) { qWarning() << m; }; + core.SetMessageConsumer(outputLambda); + opt.SetMessageConsumer(outputLambda); - if (!core.Validate(spirv)) { - throw std::runtime_error("invalid spirv"); - } - writeSpirv(baseOutName + ".spv", spirv); + if (!core.Validate(spirv)) { + throw std::runtime_error("invalid spirv"); + } + writeSpirv(baseOutName + ".spv", spirv); - opt.RegisterPass(spvtools::CreateFreezeSpecConstantValuePass()) - .RegisterPass(spvtools::CreateStrengthReductionPass()) - .RegisterPass(spvtools::CreateEliminateDeadConstantPass()) - .RegisterPass(spvtools::CreateEliminateDeadFunctionsPass()) - .RegisterPass(spvtools::CreateUnifyConstantPass()); + opt.RegisterPass(spvtools::CreateFreezeSpecConstantValuePass()) + .RegisterPass(spvtools::CreateStrengthReductionPass()) + .RegisterPass(spvtools::CreateEliminateDeadConstantPass()) + .RegisterPass(spvtools::CreateEliminateDeadFunctionsPass()) + .RegisterPass(spvtools::CreateUnifyConstantPass()); - std::vector optspirv; - if (!opt.Run(spirv.data(), spirv.size(), &optspirv)) { - throw std::runtime_error("bad optimize run"); - } - writeSpirv(baseOutName + ".opt.spv", optspirv); + std::vector optspirv; + if (!opt.Run(spirv.data(), spirv.size(), &optspirv)) { + throw std::runtime_error("bad optimize run"); + } + writeSpirv(baseOutName + ".opt.spv", optspirv); - std::string disassembly; - if (!core.Disassemble(optspirv, &disassembly)) { - throw std::runtime_error("bad disassembly"); - } + std::string disassembly; + if (!core.Disassemble(optspirv, &disassembly)) { + throw std::runtime_error("bad disassembly"); + } write(baseOutName + ".spv.txt", disassembly); } catch (const std::runtime_error& error) { @@ -490,8 +491,26 @@ void ShaderTests::testShaderLoad() { const auto& shader = shader::Source::get(shaderId); qDebug() << "Unused shader found" << shader.name.c_str(); } + +#if RUNTIME_SHADER_COMPILE_TEST + auto threadPool = QThreadPool::globalInstance(); + threadPool->setMaxThreadCount(24); + glslang::InitializeProcess(); + static TBuiltInResource glslCompilerResources; + configureGLSLCompilerResources(&glslCompilerResources); + for (const auto& shaderId : programUsedShaders) { + const auto& shaderSource = shader::Source::get(shaderId); + for (const auto& dialect : shader::allDialects()) { + for (const auto& variant : shader::allVariants()) { + rebuildSource(dialect, variant, shaderSource); + } + } + } + glslang::FinalizeProcess(); +#endif } + // Traverse all programs again to do program level tests for (const auto& programId : programIds) { auto vertexId = shader::getVertexId(programId);