Assign the correct binding slots for the Resource Buffers to fix the deformed mesh rendering of the Avatar in gles backend

This commit is contained in:
Sam Gateau 2018-11-02 00:08:47 -07:00
parent bc7e49482a
commit fa0c58fa0e
7 changed files with 20 additions and 11 deletions

View file

@ -2786,6 +2786,7 @@ void Application::initializeGL() {
} }
// Build a shared canvas / context for the QML rendering // Build a shared canvas / context for the QML rendering
#if !defined(DISABLE_QML)
{ {
_qmlShareContext = new OffscreenGLCanvas(); _qmlShareContext = new OffscreenGLCanvas();
_qmlShareContext->setObjectName("QmlShareContext"); _qmlShareContext->setObjectName("QmlShareContext");
@ -2799,6 +2800,8 @@ void Application::initializeGL() {
qCWarning(interfaceapp, "Unable to make window context current"); qCWarning(interfaceapp, "Unable to make window context current");
} }
} }
#endif
_renderEventHandler = new RenderEventHandler(); _renderEventHandler = new RenderEventHandler();

View file

@ -21,6 +21,12 @@
#define GPU_TEXTURE_TRANSFORM_OBJECT 31 #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 // Mip creation
#define GPU_TEXTURE_MIP_CREATION_INPUT 30 #define GPU_TEXTURE_MIP_CREATION_INPUT 30

View file

@ -11,12 +11,12 @@
<@func declareBlendshape(USE_NORMAL, USE_TANGENT)@> <@func declareBlendshape(USE_NORMAL, USE_TANGENT)@>
#if !defined(GPU_SSBO_TRANSFORM_OBJECT) #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) { uvec4 getPackedBlendshapeOffset(int i) {
return floatBitsToUint(texelFetch(blendshapeOffsetsBuffer, i)); return floatBitsToUint(texelFetch(blendshapeOffsetsBuffer, i));
} }
#else #else
LAYOUT_STD140(binding=0) buffer blendshapeOffsetsBuffer { LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer blendshapeOffsetsBuffer {
uvec4 _packedBlendshapeOffsets[]; uvec4 _packedBlendshapeOffsets[];
}; };
uvec4 getPackedBlendshapeOffset(int i) { uvec4 getPackedBlendshapeOffset(int i) {

View file

@ -23,7 +23,7 @@ struct ItemBound {
}; };
#if !defined(GPU_SSBO_TRANSFORM_OBJECT) #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) { ItemBound getItemBound(int i) {
int offset = 2 * i; int offset = 2 * i;
ItemBound bound; ItemBound bound;
@ -32,7 +32,7 @@ ItemBound getItemBound(int i) {
return bound; return bound;
} }
#else #else
LAYOUT_STD140(binding=0) buffer ssbo0Buffer { LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer {
ItemBound bounds[]; ItemBound bounds[];
}; };
ItemBound getItemBound(int i) { ItemBound getItemBound(int i) {

View file

@ -26,7 +26,7 @@ struct WorkloadProxy {
}; };
#if !defined(GPU_SSBO_TRANSFORM_OBJECT) #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) { WorkloadProxy getWorkloadProxy(int i) {
int offset = 2 * i; int offset = 2 * i;
WorkloadProxy proxy; WorkloadProxy proxy;
@ -35,7 +35,7 @@ WorkloadProxy getWorkloadProxy(int i) {
return proxy; return proxy;
} }
#else #else
LAYOUT_STD140(binding=0) buffer workloadProxiesBuffer { LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer workloadProxiesBuffer {
WorkloadProxy _proxies[]; WorkloadProxy _proxies[];
}; };
WorkloadProxy getWorkloadProxy(int i) { WorkloadProxy getWorkloadProxy(int i) {
@ -58,7 +58,7 @@ struct WorkloadView {
}; };
#if !defined(GPU_SSBO_TRANSFORM_OBJECT) #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) { WorkloadView getWorkloadView(int i) {
int offset = 8 * i; int offset = 8 * i;
WorkloadView view; WorkloadView view;
@ -73,7 +73,7 @@ WorkloadView getWorkloadView(int i) {
return view; return view;
} }
#else #else
LAYOUT_STD140(binding=1) buffer workloadViewsBuffer { LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT1_STORAGE) buffer workloadViewsBuffer {
WorkloadView _views[]; WorkloadView _views[];
}; };
WorkloadView getWorkloadView(int i) { WorkloadView getWorkloadView(int i) {

View file

@ -35,7 +35,7 @@ struct ItemBound {
}; };
#if !defined(GPU_SSBO_TRANSFORM_OBJECT) #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) { ItemBound getItemBound(int i) {
int offset = 2 * i; int offset = 2 * i;
ItemBound bound; ItemBound bound;
@ -44,7 +44,7 @@ ItemBound getItemBound(int i) {
return bound; return bound;
} }
#else #else
LAYOUT_STD140(binding=0) buffer ssbo0Buffer { LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer ssbo0Buffer {
ItemBound bounds[]; ItemBound bounds[];
}; };
ItemBound getItemBound(int i) { ItemBound getItemBound(int i) {

View file

@ -172,7 +172,7 @@ def processCommand(line):
scribeArgs = getCommonScribeArgs(scribeFile, libs) scribeArgs = getCommonScribeArgs(scribeFile, libs)
headerFlag = '-H' headerFlag = '-H'
# using the old flag on Android builds for now # 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): for header in getDialectAndVariantHeaders(dialect, variant):
scribeArgs.extend([headerFlag, header]) scribeArgs.extend([headerFlag, header])
scribeArgs.extend(['-o', unoptGlslFile]) scribeArgs.extend(['-o', unoptGlslFile])