diff --git a/examples/39-assao/assao.cpp b/examples/39-assao/assao.cpp index 2a1e5d74f..fe9e9fe59 100644 --- a/examples/39-assao/assao.cpp +++ b/examples/39-assao/assao.cpp @@ -363,7 +363,7 @@ namespace m_recreateFrameBuffers = false; createFramebuffers(); - m_loadCounter = bgfx::createTexture2D(1, 1, false, 1, bgfx::TextureFormat::R32U, BGFX_TEXTURE_COMPUTE_WRITE); + m_loadCounter = bgfx::createDynamicIndexBuffer(1, BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32); // Vertex decl PosTexCoord0Vertex::init(); @@ -630,7 +630,7 @@ namespace if (!adaptiveBasePass && (m_settings.m_qualityLevel == 3)) { - bgfx::setImage(3, m_loadCounter, 0, bgfx::Access::Read, bgfx::TextureFormat::R32U); + bgfx::setBuffer(3, m_loadCounter, bgfx::Access::Read); bgfx::setTexture(4, s_importanceMap, m_importanceMap, SAMPLER_LINEAR_CLAMP); bgfx::setImage(5, m_finalResults, 0, bgfx::Access::Read, bgfx::TextureFormat::RG8); } @@ -697,13 +697,13 @@ namespace bgfx::setTexture(1, s_importanceMap, m_importanceMap); bgfx::dispatch(view, m_postprocessImportanceMapAProgram, (m_quarterSize[0] + 7) / 8, (m_quarterSize[1] + 7) / 8); - bgfx::setImage(0, m_loadCounter, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::R32U); + bgfx::setBuffer(0, m_loadCounter, bgfx::Access::ReadWrite); bgfx::dispatch(view, m_loadCounterClearProgram, 1,1); m_uniforms.submit(); bgfx::setImage(0, m_importanceMap, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); bgfx::setTexture(1, s_importanceMap, m_importanceMapPong); - bgfx::setImage(2, m_loadCounter, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::R32U); + bgfx::setBuffer(2, m_loadCounter, bgfx::Access::ReadWrite); bgfx::dispatch(view, m_postprocessImportanceMapBProgram, (m_quarterSize[0]+7) / 8, (m_quarterSize[1]+7) / 8); ++view; } @@ -1159,7 +1159,7 @@ namespace // Only needed for quality level 3 (adaptive quality) bgfx::TextureHandle m_importanceMap; bgfx::TextureHandle m_importanceMapPong; - bgfx::TextureHandle m_loadCounter; + bgfx::DynamicIndexBufferHandle m_loadCounter; struct Model { diff --git a/examples/39-assao/cs_assao_generate_q.sh b/examples/39-assao/cs_assao_generate_q.sh index 8509d7edc..fbd140af1 100644 --- a/examples/39-assao/cs_assao_generate_q.sh +++ b/examples/39-assao/cs_assao_generate_q.sh @@ -59,7 +59,7 @@ CONST(uint g_numTaps[5]) = { 3, 5, 12, 0, 0 }; SAMPLER2D(s_viewspaceDepthSource, 0); SAMPLER2D(s_viewspaceDepthSourceMirror, 1); IMAGE2D_RO(s_normalmapSource, rgba8, 2); -UIMAGE2D_RO(s_loadCounter, r32ui, 3); +BUFFER_RO(s_loadCounter, uint, 3); SAMPLER2D(s_importanceMap, 4); IMAGE2D_ARRAY_RO(s_baseSSAO, rg8, 5); IMAGE2D_ARRAY_WR(s_target, rg8, 6); @@ -410,7 +410,7 @@ void GenerateSSAOShadowsInternal( out float outShadowTerm, out vec4 outEdges, ou float edgeCount = dot( 1.0-edgesLRTB, vec4( 1.0, 1.0, 1.0, 1.0 ) ); //importance += edgeCount / (float)SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT; - float avgTotalImportance = float(imageLoad(s_loadCounter,ivec2(0,0)).x) * u_loadCounterAvgDiv; + float avgTotalImportance = float(s_loadCounter[0]) * u_loadCounterAvgDiv; float importanceLimiter = saturate( u_adaptiveSampleCountLimit / avgTotalImportance ); importance *= importanceLimiter; diff --git a/examples/39-assao/cs_assao_load_counter_clear.sc b/examples/39-assao/cs_assao_load_counter_clear.sc index 83e55cde8..c3323f223 100644 --- a/examples/39-assao/cs_assao_load_counter_clear.sc +++ b/examples/39-assao/cs_assao_load_counter_clear.sc @@ -6,10 +6,10 @@ #include "bgfx_compute.sh" #include "uniforms.sh" -UIMAGE2D_WR(s_loadCounterOutputUAV, r32ui, 0); +BUFFER_WR(s_loadCounter, uint, 0); NUM_THREADS(1, 1, 1) void main() { - imageStore(s_loadCounterOutputUAV, ivec2(0, 0), uvec4(0,0,0,0)); + s_loadCounter[0] = 0; } diff --git a/examples/39-assao/cs_assao_postprocess_importance_map_b.sc b/examples/39-assao/cs_assao_postprocess_importance_map_b.sc index 979dfe40c..caf7695a3 100644 --- a/examples/39-assao/cs_assao_postprocess_importance_map_b.sc +++ b/examples/39-assao/cs_assao_postprocess_importance_map_b.sc @@ -8,7 +8,7 @@ IMAGE2D_WR(s_target, r8, 0); SAMPLER2D(s_importanceMap, 1); -UIMAGE2D_RW(s_loadCounterOutputUAV, r32ui, 2); +BUFFER_RW(s_loadCounter, uint, 2); CONST(float cSmoothenImportance) = 1.0; @@ -49,7 +49,7 @@ void main() #else if( ((dtID.x % 3) + (dtID.y % 3)) == 0 ) #endif - imageAtomicAdd(s_loadCounterOutputUAV, ivec2(0, 0), sum ); + atomicAdd(s_loadCounter[0], sum ); imageStore(s_target, ivec2(dtID.xy), retVal.xxxx); } } diff --git a/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin b/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin index a26eb577b..ee238de05 100644 Binary files a/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin and b/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin differ diff --git a/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin b/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin index 8541bfc92..ce92e7a20 100644 Binary files a/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin and b/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin differ diff --git a/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin b/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin index 69faebd10..bbd2dd23d 100644 Binary files a/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin and b/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin differ diff --git a/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin b/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin index bb6ad9291..58ee1ef28 100644 Binary files a/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin and b/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin differ diff --git a/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin b/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin index 7e48f3b99..0547b75c8 100644 Binary files a/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin and b/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin b/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin index 9e3cab2a1..6e613706a 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin and b/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin b/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin index 49c18dfba..e9317f72b 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin and b/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin b/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin index 25c0e834a..fd1b27a70 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin and b/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin b/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin index 9eba60b13..cad20c9d4 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin and b/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin b/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin index 6f8e34cc1..4d7d5c08c 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin and b/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin b/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin index 9802ebee1..75daf18d1 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin and b/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin differ diff --git a/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin b/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin index 100ebe53d..5bcff91f4 100644 Binary files a/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin and b/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_apply.bin b/examples/runtime/shaders/metal/cs_assao_apply.bin index 18d50ca6e..14bca91a1 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_apply.bin and b/examples/runtime/shaders/metal/cs_assao_apply.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin b/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin index 616f0d501..a9b12854f 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin and b/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q0.bin b/examples/runtime/shaders/metal/cs_assao_generate_q0.bin index 6db4f081e..0fd663254 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_q0.bin and b/examples/runtime/shaders/metal/cs_assao_generate_q0.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q1.bin b/examples/runtime/shaders/metal/cs_assao_generate_q1.bin index 76eebaae8..589df255e 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_q1.bin and b/examples/runtime/shaders/metal/cs_assao_generate_q1.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q2.bin b/examples/runtime/shaders/metal/cs_assao_generate_q2.bin index d9361ec3f..5e198bc74 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_q2.bin and b/examples/runtime/shaders/metal/cs_assao_generate_q2.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q3.bin b/examples/runtime/shaders/metal/cs_assao_generate_q3.bin index d90580cb7..27d067c0f 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_q3.bin and b/examples/runtime/shaders/metal/cs_assao_generate_q3.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin b/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin index 5029fbf5c..62cc72c83 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin and b/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin b/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin index 1574ef416..5099c3c6a 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin and b/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin b/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin index 1c0c0b4ed..ee5934287 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin and b/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin b/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin index 1b3ad979c..b96b8a125 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin and b/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin b/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin index ea9f2e554..1259defd7 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin and b/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin b/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin index cde4dee72..fdcbd0750 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin and b/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin b/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin index 2fa2239af..507b3fccc 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin and b/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin index b83a15dc1..abb2f70a5 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin and b/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin index 1716852fc..025dd9954 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin and b/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin index 3ef815f38..402e781b2 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin and b/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin index c07dbc78c..87a30249a 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin and b/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin index ffcccf9f6..46d0693a7 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin and b/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_smart_blur.bin b/examples/runtime/shaders/metal/cs_assao_smart_blur.bin index 4fe2446fc..851765104 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_smart_blur.bin and b/examples/runtime/shaders/metal/cs_assao_smart_blur.bin differ diff --git a/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin b/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin index 670202c1a..e5c527ace 100644 Binary files a/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin and b/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin differ