From fa0c58fa0e78f44dc9fd12f5766102ae4f94b431 Mon Sep 17 00:00:00 2001 From: Sam Gateau <samuel.gateau@gmail.com> Date: Fri, 2 Nov 2018 00:08:47 -0700 Subject: [PATCH] Assign the correct binding slots for the Resource Buffers to fix the deformed mesh rendering of the Avatar in gles backend --- interface/src/Application.cpp | 3 +++ libraries/gpu/src/gpu/ShaderConstants.h | 6 ++++++ libraries/render-utils/src/Blendshape.slh | 4 ++-- libraries/render-utils/src/Highlight_aabox.slv | 4 ++-- libraries/render-utils/src/WorkloadResource.slh | 8 ++++---- libraries/render/src/render/drawItemBounds.slv | 4 ++-- tools/shadergen.py | 2 +- 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7cd91d76a0..d50c5d24fb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2786,6 +2786,7 @@ void Application::initializeGL() { } // Build a shared canvas / context for the QML rendering +#if !defined(DISABLE_QML) { _qmlShareContext = new OffscreenGLCanvas(); _qmlShareContext->setObjectName("QmlShareContext"); @@ -2799,6 +2800,8 @@ void Application::initializeGL() { qCWarning(interfaceapp, "Unable to make window context current"); } } +#endif + _renderEventHandler = new RenderEventHandler(); diff --git a/libraries/gpu/src/gpu/ShaderConstants.h b/libraries/gpu/src/gpu/ShaderConstants.h index e9a1821ef4..ef8e26519c 100644 --- a/libraries/gpu/src/gpu/ShaderConstants.h +++ b/libraries/gpu/src/gpu/ShaderConstants.h @@ -21,6 +21,12 @@ #define GPU_TEXTURE_TRANSFORM_OBJECT 31 + +#define GPU_RESOURCE_BUFFER_SLOT0_TEXTURE 35 +#define GPU_RESOURCE_BUFFER_SLOT1_TEXTURE 35 +#define GPU_RESOURCE_BUFFER_SLOT0_STORAGE 0 +#define GPU_RESOURCE_BUFFER_SLOT1_STORAGE 1 + // Mip creation #define GPU_TEXTURE_MIP_CREATION_INPUT 30 diff --git a/libraries/render-utils/src/Blendshape.slh b/libraries/render-utils/src/Blendshape.slh index 73a561c73f..f2c6bfe794 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=0) uniform samplerBuffer blendshapeOffsetsBuffer; +LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer blendshapeOffsetsBuffer; uvec4 getPackedBlendshapeOffset(int i) { return floatBitsToUint(texelFetch(blendshapeOffsetsBuffer, i)); } #else -LAYOUT_STD140(binding=0) buffer blendshapeOffsetsBuffer { +LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer blendshapeOffsetsBuffer { uvec4 _packedBlendshapeOffsets[]; }; uvec4 getPackedBlendshapeOffset(int i) { diff --git a/libraries/render-utils/src/Highlight_aabox.slv b/libraries/render-utils/src/Highlight_aabox.slv index 17ef7b6e07..65b98355ae 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=0) uniform samplerBuffer ssbo0Buffer; +LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer 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=0) buffer ssbo0Buffer { +LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer { ItemBound bounds[]; }; ItemBound getItemBound(int i) { diff --git a/libraries/render-utils/src/WorkloadResource.slh b/libraries/render-utils/src/WorkloadResource.slh index ed23abd5ae..14fa33a12e 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=0) uniform samplerBuffer workloadProxiesBuffer; +LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer 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=0) buffer workloadProxiesBuffer { +LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer workloadProxiesBuffer { WorkloadProxy _proxies[]; }; WorkloadProxy getWorkloadProxy(int i) { @@ -58,7 +58,7 @@ struct WorkloadView { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=1) uniform samplerBuffer workloadViewsBuffer; +LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT1_TEXTURE) uniform samplerBuffer 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=1) buffer workloadViewsBuffer { +LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT1_STORAGE) buffer workloadViewsBuffer { WorkloadView _views[]; }; WorkloadView getWorkloadView(int i) { diff --git a/libraries/render/src/render/drawItemBounds.slv b/libraries/render/src/render/drawItemBounds.slv index 0a9615c9c2..bb8e6a2886 100644 --- a/libraries/render/src/render/drawItemBounds.slv +++ b/libraries/render/src/render/drawItemBounds.slv @@ -35,7 +35,7 @@ struct ItemBound { }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) -LAYOUT(binding=0) uniform samplerBuffer ssbo0Buffer; +LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer 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=0) buffer ssbo0Buffer { +LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer { ItemBound bounds[]; }; ItemBound getItemBound(int i) { diff --git a/tools/shadergen.py b/tools/shadergen.py index 7450aebcb3..8936b987c5 100644 --- a/tools/shadergen.py +++ b/tools/shadergen.py @@ -172,7 +172,7 @@ def processCommand(line): scribeArgs = getCommonScribeArgs(scribeFile, libs) headerFlag = '-H' # using the old flag on Android builds for now - if (dialect == '310es'): headerFlag = '-h' + if (dialect == '310es'): headerFlag = '-H' for header in getDialectAndVariantHeaders(dialect, variant): scribeArgs.extend([headerFlag, header]) scribeArgs.extend(['-o', unoptGlslFile])