// // Created by Sam Gateau on 7/31/2018. // Copyright 2018 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // <@if not WORKLOAD_RESOURCE_SLH@> <@def WORKLOAD_RESOURCE_SLH@> <@include gpu/Color.slh@> <$declareColorWheel()$> const vec4 REGION_COLOR[4] = vec4[4]( vec4(0.0, 1.0, 0.0, 1.0), vec4(1.0, 0.6, 0.0, 1.0), vec4(1.0, 0.0, 0.0, 1.0), vec4(0.3, 0.0, 0.8, 1.0) ); <@func declareWorkloadProxies() @> struct WorkloadProxy { vec4 sphere; vec4 region; }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT0_TEXTURE) uniform samplerBuffer workloadProxiesBuffer; WorkloadProxy getWorkloadProxy(int i) { int offset = 2 * i; WorkloadProxy proxy; proxy.sphere = texelFetch(workloadProxiesBuffer, offset); proxy.region = texelFetch(workloadProxiesBuffer, offset + 1); return proxy; } #else LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT0_STORAGE) buffer workloadProxiesBuffer { WorkloadProxy _proxies[]; }; WorkloadProxy getWorkloadProxy(int i) { WorkloadProxy proxy = _proxies[i]; return proxy; } #endif <@endfunc@> <@func declareWorkloadViews() @> struct WorkloadView { vec4 direction_far; vec4 fov; vec4 origin; vec4 backFront[2]; vec4 regions[3]; }; #if !defined(GPU_SSBO_TRANSFORM_OBJECT) LAYOUT(binding=GPU_RESOURCE_BUFFER_SLOT1_TEXTURE) uniform samplerBuffer workloadViewsBuffer; WorkloadView getWorkloadView(int i) { int offset = 8 * i; WorkloadView view; view.direction_far = texelFetch(workloadViewsBuffer, offset + 0); view.fov = texelFetch(workloadViewsBuffer, offset + 1); view.origin = texelFetch(workloadViewsBuffer, offset + 2); view.backFront[0] = texelFetch(workloadViewsBuffer, offset + 3); view.backFront[1] = texelFetch(workloadViewsBuffer, offset + 4); view.regions[0] = texelFetch(workloadViewsBuffer, offset + 5); view.regions[1] = texelFetch(workloadViewsBuffer, offset + 6); view.regions[2] = texelFetch(workloadViewsBuffer, offset + 7); return view; } #else LAYOUT_STD140(binding=GPU_RESOURCE_BUFFER_SLOT1_STORAGE) buffer workloadViewsBuffer { WorkloadView _views[]; }; WorkloadView getWorkloadView(int i) { WorkloadView view = _views[i]; return view; } #endif <@endfunc@> <@endif@>