From f04755f9a3b5b818704ab5602833b4f44a68ee39 Mon Sep 17 00:00:00 2001 From: jcherlin Date: Sat, 9 Jul 2016 23:41:38 -0700 Subject: [PATCH] Mouse Picking Example (#846) * Added mouse picking example. --- examples/30-picking/fs_picking_id.sc | 16 + examples/30-picking/fs_picking_shaded.sc | 44 +++ examples/30-picking/makefile | 18 ++ examples/30-picking/picking.cpp | 382 +++++++++++++++++++++++ examples/30-picking/screenshot.png | Bin 0 -> 72262 bytes examples/30-picking/varying.def.sc | 10 + examples/30-picking/vs_picking_shaded.sc | 25 ++ scripts/genie.lua | 1 + 8 files changed, 496 insertions(+) create mode 100644 examples/30-picking/fs_picking_id.sc create mode 100644 examples/30-picking/fs_picking_shaded.sc create mode 100644 examples/30-picking/makefile create mode 100644 examples/30-picking/picking.cpp create mode 100644 examples/30-picking/screenshot.png create mode 100644 examples/30-picking/varying.def.sc create mode 100644 examples/30-picking/vs_picking_shaded.sc diff --git a/examples/30-picking/fs_picking_id.sc b/examples/30-picking/fs_picking_id.sc new file mode 100644 index 000000000..899371379 --- /dev/null +++ b/examples/30-picking/fs_picking_id.sc @@ -0,0 +1,16 @@ +$input v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_id; + +void main() +{ + gl_FragColor.xyz = u_id.xyz; // This is dumb, should use u8 texture + gl_FragColor.w = 1.0; +} diff --git a/examples/30-picking/fs_picking_shaded.sc b/examples/30-picking/fs_picking_shaded.sc new file mode 100644 index 000000000..668b80142 --- /dev/null +++ b/examples/30-picking/fs_picking_shaded.sc @@ -0,0 +1,44 @@ +$input v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir) +{ + float ndotl = dot(_normal, _lightDir); + vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); + float rdotv = dot(reflected, _viewDir); + return vec2(ndotl, rdotv); +} + +float fresnel(float _ndotl, float _bias, float _pow) +{ + float facing = (1.0 - _ndotl); + return max(_bias + (1.0 - _bias) * pow(facing, _pow), 0.0); +} + +vec4 lit(float _ndotl, float _rdotv, float _m) +{ + float diff = max(0.0, _ndotl); + float spec = step(0.0, _ndotl) * max(0.0, _rdotv * _m); + return vec4(1.0, diff, spec, 1.0); +} + +void main() +{ + vec3 lightDir = vec3(0.0, 0.0, -1.0); + vec3 normal = normalize(v_normal); + vec3 view = normalize(v_view); + vec2 bln = blinn(lightDir, normal, view); + vec4 lc = lit(bln.x, bln.y, 1.0); + float fres = fresnel(bln.x, 0.2, 5.0); + + vec3 color = v_color0.xyz; + + gl_FragColor.xyz = pow(vec3(0.07, 0.06, 0.08) + color*lc.y + fres*pow(lc.z, 128.0), vec3_splat(1.0/2.2) ); + gl_FragColor.w = 1.0; +} diff --git a/examples/30-picking/makefile b/examples/30-picking/makefile new file mode 100644 index 000000000..e6278cb66 --- /dev/null +++ b/examples/30-picking/makefile @@ -0,0 +1,18 @@ +# +# Copyright 2011-2016 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk + +rebuild: + @make -s --no-print-directory TARGET=0 clean all + @make -s --no-print-directory TARGET=1 clean all + @make -s --no-print-directory TARGET=2 clean all + @make -s --no-print-directory TARGET=3 clean all + @make -s --no-print-directory TARGET=4 clean all + @make -s --no-print-directory TARGET=5 clean all diff --git a/examples/30-picking/picking.cpp b/examples/30-picking/picking.cpp new file mode 100644 index 000000000..006fb2f62 --- /dev/null +++ b/examples/30-picking/picking.cpp @@ -0,0 +1,382 @@ +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" +#include +#include + + +#define RENDER_PASS_SHADING 0 // Default forward rendered geo with simple shading +#define RENDER_PASS_ID 1 // ID buffer for picking +#define RENDER_PASS_BLIT 2 // Blit GPU render target to CPU texture + +#define ID_DIM 8 // Size of the ID buffer + +class ExamplePicking : public entry::AppI +{ + void init(int _argc, char** _argv) BX_OVERRIDE + { + Args args(_argc, _argv); + + m_width = 1280; + m_height = 720; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + + bgfx::init(args.m_type, args.m_pciId); + + bgfx::reset(m_width, m_height, m_reset); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Set up screen clears + bgfx::setViewClear(RENDER_PASS_SHADING + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + // ID buffer clears to black, which represnts clicking on nothing (background) + bgfx::setViewClear(RENDER_PASS_ID + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x000000ff + , 1.0f + , 0 + ); + + // Create uniforms + u_tint = bgfx::createUniform("u_tint", bgfx::UniformType::Vec4); // Tint for when you click on items + u_id = bgfx::createUniform("u_id", bgfx::UniformType::Vec4); // ID for drawing into ID buffer + + // Create program from shaders. + m_shadingProgram = loadProgram("vs_picking_shaded", "fs_picking_shaded"); // Blinn shading + m_idProgram = loadProgram("vs_picking_shaded", "fs_picking_id"); // Shader for drawing into ID buffer + + const char * meshPaths[] = {"meshes/orb.bin", "meshes/column.bin", "meshes/bunny.bin", "meshes/cube.bin", "meshes/tree.bin", "meshes/hollowcube.bin"}; + const float meshScale[] = {0.5f, 0.05f, 0.5f, 0.25f, 0.05f, 0.05f}; + + bx::RngMwc mwc; // Random number generator + for (int32_t i = 0; i < 12; i++) { + m_meshes[i] = meshLoad(meshPaths[i%6]); + m_meshScale[i] = meshScale[i%6]; + // For the sake of this example, we'll give each mesh a random color, so the debug output looks colorful. + // In an actual app, you'd probably just want to count starting from 1 + uint32_t r = mwc.gen() % 256; + uint32_t g = mwc.gen() % 256; + uint32_t b = mwc.gen() % 256; + m_idsF[i][0] = r/255.0f; + m_idsF[i][1] = g/255.0f; + m_idsF[i][2] = b/255.0f; + m_idsF[i][3] = 1.0f; + m_idsU[i] = (r)+(g << 8) + (b << 16) + (255u << 24); + } + + m_timeOffset = bx::getHPCounter(); + + // Set up ID buffer, which has a color target and depth buffer + m_pickingRT = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::RGBA8, // Probably would be better to use unsigned format + // but currently doesn't display in imgui + 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + m_pickingRTDepth = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::D24S8, + 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + + // CPU texture for blitting to and reading ID buffer so we can see what was clicked on + // Impossible to read directly from a render target, you *must* blit to a CPU texture first. + // Algorithm Overview: + // Render on GPU -> Blit to CPU texture -> Read from CPU texture + m_blitTex = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::RGBA8, + 0 + | BGFX_TEXTURE_BLIT_DST // <== + | BGFX_TEXTURE_READ_BACK // <== + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + + bgfx::TextureHandle rt[2] = { m_pickingRT, m_pickingRTDepth }; + m_pickingFB = bgfx::createFrameBuffer(BX_COUNTOF(rt), rt, true); + + imguiCreate(); + } + + int shutdown() BX_OVERRIDE + { + for (int32_t i = 0; i < 12; i++) { + meshUnload(m_meshes[i]); + } + + // Cleanup. + bgfx::destroyProgram(m_shadingProgram); + bgfx::destroyProgram(m_idProgram); + + bgfx::destroyUniform(u_tint); + bgfx::destroyUniform(u_id); + + bgfx::destroyFrameBuffer(m_pickingFB); + bgfx::destroyTexture(m_pickingRT); + bgfx::destroyTexture(m_pickingRTDepth); + bgfx::destroyTexture(m_blitTex); + + imguiDestroy(); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() BX_OVERRIDE + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + bgfx::setViewFrameBuffer(RENDER_PASS_ID, m_pickingFB); + + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const double toMs = 1000.0 / freq; + float time = (float)((bx::getHPCounter() - m_timeOffset) / double(bx::getHPFrequency())); + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/30-picking"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Mouse picking."); + bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs); + + // Set up matrices for basic forward renderer + const float camSpeed = 0.25; + float cameraSpin = (float)m_cameraSpin; + float eyeDist = 2.5f; + float eye[3] = { -eyeDist * bx::fsin(time*cameraSpin*camSpeed), 0.0f, -eyeDist * bx::fcos(time*cameraSpin*camSpeed) }; + float at[3] = { 0.0f, 0.0f, 0.0f }; + + float view[16]; + bx::mtxLookAt(view, eye, at); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f); + + // Set up view rect and transform for the shaded pass + bgfx::setViewRect(RENDER_PASS_SHADING, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(RENDER_PASS_SHADING, view, proj); + + // Set up picking pass + float pickView[16]; + float pickAt[4]; // Need to inversly project the mouse pointer to determin what we're looking at + float pickEye[3] = { eye[0], eye[1], eye[2] }; // Eye is same location as before + float viewProj[16]; + bx::mtxMul(viewProj, view, proj); + float invViewProj[16]; + bx::mtxInverse(invViewProj, viewProj); + // Mouse coord in NDC + float mouseXNDC = (m_mouseState.m_mx / (float)m_width) * 2.0f - 1.0f; + float mouseYNDC = ((m_height-m_mouseState.m_my) / (float)m_height) * 2.0f - 1.0f; + float mousePosNDC[4] = { mouseXNDC, mouseYNDC, 0, 1.0f }; + // Unproject and perspective divide + bx::vec4MulMtx(pickAt, mousePosNDC, invViewProj); + pickAt[3] = 1.0f/pickAt[3]; + pickAt[0] *= pickAt[3]; + pickAt[1] *= pickAt[3]; + pickAt[2] *= pickAt[3]; + + // Look at our unprojected point + bx::mtxLookAt(pickView, pickEye, pickAt); + float pickProj[16]; + + // Tight FOV is best for picking + bx::mtxProj(pickProj, m_fov, 1, 0.1f, 100.0f); + // View rect and transforms for picking pass + bgfx::setViewRect(RENDER_PASS_ID, 0, 0, ID_DIM, ID_DIM); + bgfx::setViewTransform(RENDER_PASS_ID, pickView, pickProj); + + // Now that our passes are set up, we can finally draw each mesh + + // Picking highlights a mesh so we'll set up this tint color + const float tintBasic[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + const float tintHighlighted[4] = { 0.3f, 0.3f, 2.0f, 1.0f }; + + for (uint32_t m = 0; m < 12; m++) { + // Set up transform matrix for each mesh + float mtxRot[16]; + bx::mtxRotateXY(mtxRot + , 0.0f + , time*0.37f*(m % 2 ? 1.0f : -1.0f) + ); + float mtxScale[16]; + float scale = m_meshScale[m]; + bx::mtxScale(mtxScale + , scale + , scale + , scale + ); + float mtxTrans[16]; + bx::mtxTranslate(mtxTrans + , (m%4)-1.5f + , (m/4)-1.25f + , 0.0f + ); + + float mtx[16]; + float mtxTransScale[16]; + bx::mtxMul(mtxTransScale, mtxScale, mtxTrans); + bx::mtxMul(mtx, mtxRot, mtxTransScale); + + // Submit mesh to both of our render passes + + // Set uniform based on if this is the highlighted mesh + bgfx::setUniform(u_tint, m == m_highlighted ? tintHighlighted : tintBasic); + meshSubmit(m_meshes[m], RENDER_PASS_SHADING, m_shadingProgram, mtx); + + // Submit ID pass based on mesh ID + bgfx::setUniform(u_id, m_idsF[m]); + meshSubmit(m_meshes[m], RENDER_PASS_ID, m_idProgram, mtx); + } + + // If the user previously clicked, and we're done reading data from GPU, look at ID buffer on CPU + // Whatever mesh has the most pixels in the ID buffer is the one the user clicked on. + if (m_reading == m_currFrame) { + m_reading = 0; + std::map ids; // This contains all the IDs found in the buffer + uint32_t maxAmount = 0; + for (uint8_t *x = m_blitData; x < m_blitData + ID_DIM * ID_DIM * 4;) { + uint8_t r = *x++; + uint8_t g = *x++; + uint8_t b = *x++; + uint8_t a = *x++; + + const bgfx::Caps* caps = bgfx::getCaps(); + if (bgfx::RendererType::Direct3D9 == caps->rendererType) { + // Comes back as BGRA + uint8_t temp = r; + r = b; + b = temp; + } + + if (r == 0 && g == 0 && b == 0) // Skip background + continue; + + uint32_t hashKey = (r)+(g<<8)+(b<<16)+(a<<24); + std::map::iterator mapIter = ids.find(hashKey); + uint32_t amount = 1; + if (mapIter != ids.end()) { + amount = mapIter->second + 1; + } + ids[hashKey] = amount; // Amount of times this ID (color) has been clicked on in buffer + maxAmount = maxAmount > amount ? maxAmount : amount; + } + uint32_t idKey = 0; + m_highlighted = UINT32_MAX; + if (maxAmount) { + for (std::map::iterator mapIter = ids.begin(); mapIter != ids.end(); mapIter++) { + if (mapIter->second == maxAmount) { + idKey = mapIter->first; + break; + } + } + for (uint32_t i = 0; i < 12; i++) { + if (m_idsU[i] == idKey) { + m_highlighted = i; + break; + } + } + } + } + + // Start a new readback? + if (!m_reading && m_mouseState.m_buttons[entry::MouseButton::Left]) { + // Blit and read + bgfx::blit(RENDER_PASS_BLIT, m_blitTex, 0, 0, m_pickingRT); + m_reading = bgfx::readTexture(m_blitTex, m_blitData); + } + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , m_width + , m_height + ); + + imguiBeginArea("Picking Render Target:", 10, 100, 300, 400); + imguiImage(m_pickingRT, 1.0f, 1.0f, 1.0f); + imguiSlider("FOV", m_fov, 1.0f, 60.0f, 1.0f); + + if (imguiCheck("Spin Camera", m_cameraSpin)) { + m_cameraSpin = !m_cameraSpin; + } + + imguiEndArea(); + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + int64_t m_timeOffset; + + entry::MouseState m_mouseState; + + Mesh* m_meshes[12]; + float m_meshScale[12]; + float m_idsF[12][4]; + uint32_t m_idsU[12]; + uint32_t m_highlighted = UINT32_MAX; + + // Resource handles + bgfx::ProgramHandle m_shadingProgram; + bgfx::ProgramHandle m_idProgram; + bgfx::UniformHandle u_tint; + bgfx::UniformHandle u_id; + bgfx::TextureHandle m_pickingRT; + bgfx::TextureHandle m_pickingRTDepth; + bgfx::TextureHandle m_blitTex; + bgfx::FrameBufferHandle m_pickingFB; + + uint8_t m_blitData[ID_DIM*ID_DIM*4]; // Read blit into this + + uint32_t m_reading = 0; + uint32_t m_currFrame = UINT32_MAX; + + // UI + float m_fov = 3.0f; + bool m_cameraSpin = false; +}; + +ENTRY_IMPLEMENT_MAIN(ExamplePicking); diff --git a/examples/30-picking/screenshot.png b/examples/30-picking/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e51fcee2a431cb823d017bed8b6ae01fed24be9d GIT binary patch literal 72262 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%0DY~A-+^Ld_Ind?M6WpBqnJtT6^7EnTJCYyi2 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�T{{Ie_Hr&b7arl-*3L)6ofvfxAJ07Yq!{NpklK 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 literal 0 HcmV?d00001 diff --git a/examples/30-picking/varying.def.sc b/examples/30-picking/varying.def.sc new file mode 100644 index 000000000..a66707865 --- /dev/null +++ b/examples/30-picking/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_pos : TEXCOORD1 = vec3(0.0, 0.0, 0.0); +vec3 v_view : TEXCOORD2 = vec3(0.0, 0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; diff --git a/examples/30-picking/vs_picking_shaded.sc b/examples/30-picking/vs_picking_shaded.sc new file mode 100644 index 000000000..441419040 --- /dev/null +++ b/examples/30-picking/vs_picking_shaded.sc @@ -0,0 +1,25 @@ +$input a_position, a_normal +$output v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_tint; + +void main() +{ + vec3 pos = a_position; + vec3 normal = a_normal.xyz*2.0 - 1.0; + + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0) ); + v_pos = gl_Position.xyz; + v_view = mul(u_modelView, vec4(pos, 1.0) ).xyz; + + v_normal = mul(u_modelView, vec4(normal, 0.0) ).xyz; + + v_color0 = u_tint*vec4(0.8, 0.8, 0.8, 1.0); +} diff --git a/scripts/genie.lua b/scripts/genie.lua index ce34df5d9..1ead104f0 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -391,6 +391,7 @@ exampleProject("26-occlusion") exampleProject("27-terrain") exampleProject("28-wireframe") exampleProject("29-debugdraw") +exampleProject("30-picking") -- C99 source doesn't compile under WinRT settings if not premake.vstudio.iswinrt() then