mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2025-04-02 02:19:48 -04:00
Merge branch 'master' of github.com:bkaradzic/bgfx
This commit is contained in:
commit
123b2742b1
18 changed files with 367 additions and 144 deletions
README.md
examples
01-cubes
02-metaballs
04-mesh
05-instancing
06-bump
10-font
11-fontsdf
12-lod
14-shadowvolumes
common
include
src
|
@ -37,7 +37,7 @@ Languages:
|
|||
* [C99 API documentation](https://github.com/bkaradzic/bgfx/blob/master/include/bgfx.c99.h)
|
||||
* [C++ API documentation](https://github.com/bkaradzic/bgfx/blob/master/include/bgfx.h)
|
||||
* [C#/VB/F# language API bindings](https://github.com/MikePopoloski/SharpBgfx)
|
||||
* [D language API bindings](https://github.com/p0nce/DerelictBgfx)
|
||||
* [D language API bindings](https://github.com/DerelictOrg/DerelictBgfx)
|
||||
* [Go language API bindings](https://github.com/james4k/go-bgfx)
|
||||
|
||||
Who is using it?
|
||||
|
|
|
@ -95,44 +95,10 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Create program from shaders.
|
||||
bgfx::ProgramHandle program = loadProgram("vs_cubes", "fs_cubes");
|
||||
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -35.0f };
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!entry::processEvents(width, height, debug, reset) )
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
// This dummy draw call is here to make sure that view 0 is cleared
|
||||
// if no other draw calls are submitted to view 0.
|
||||
bgfx::submit(0);
|
||||
|
||||
int64_t now = bx::getHPCounter();
|
||||
static int64_t last = now;
|
||||
const int64_t frameTime = now - last;
|
||||
|
@ -148,6 +114,44 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Rendering simple static mesh.");
|
||||
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
|
||||
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -35.0f };
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
// This dummy draw call is here to make sure that view 0 is cleared
|
||||
// if no other draw calls are submitted to view 0.
|
||||
bgfx::submit(0);
|
||||
|
||||
// Submit 11x11 cubes.
|
||||
for (uint32_t yy = 0; yy < 11; ++yy)
|
||||
{
|
||||
|
|
|
@ -542,16 +542,39 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/02-metaball");
|
||||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Rendering with transient buffers and embedding shaders.");
|
||||
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -50.0f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
// Stats.
|
||||
uint32_t numVertices = 0;
|
||||
|
|
|
@ -60,16 +60,39 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Loading meshes.");
|
||||
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
|
||||
|
||||
float at[3] = { 0.0f, 1.0f, 0.0f };
|
||||
float at[3] = { 0.0f, 1.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 1.0f, -2.5f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
float mtx[16];
|
||||
bx::mtxRotateXY(mtx
|
||||
|
|
|
@ -130,16 +130,39 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
}
|
||||
else
|
||||
{
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -35.0f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
const uint16_t instanceStride = 80;
|
||||
const bgfx::InstanceDataBuffer* idb = bgfx::allocInstanceDataBuffer(121, instanceStride);
|
||||
|
|
|
@ -190,13 +190,39 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Loading textures.");
|
||||
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
|
||||
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -7.0f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
// Set view and projection matrix for view 0.
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
float lightPosRadius[4][4];
|
||||
for (uint32_t ii = 0; ii < numLights; ++ii)
|
||||
|
@ -219,9 +245,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
|
||||
bgfx::setUniform(u_lightRgbInnerR, lightRgbInnerR, numLights);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
const uint16_t instanceStride = 64;
|
||||
const uint16_t numInstances = 3;
|
||||
|
||||
|
|
|
@ -165,9 +165,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
|
||||
while (!entry::processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
|
||||
// This dummy draw call is here to make sure that view 0 is cleared
|
||||
// if no other draw calls are submitted to view 0.
|
||||
bgfx::submit(0);
|
||||
|
@ -195,19 +192,42 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
textBufferManager->appendText(transientText, visitor10, L"text buffer\n");
|
||||
textBufferManager->appendText(transientText, visitor10, fpsText);
|
||||
|
||||
float at[3] = { 0, 0, 0.0f };
|
||||
float at[3] = { 0, 0, 0.0f };
|
||||
float eye[3] = {0, 0, -1.0f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
// Setup a top-left ortho matrix for screen space drawing.
|
||||
float centering = 0.5f;
|
||||
bx::mtxOrtho(proj, centering, width + centering, height + centering, centering, -1.0f, 1.0f);
|
||||
const float centering = 0.5f;
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
// Setup a top-left ortho matrix for screen space drawing.
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
static float time = 0.0f;
|
||||
time += 0.05f;
|
||||
|
||||
const float dist = 10.0f;
|
||||
const float offset0 = -proj[8] + (hmd->eye[0].adjust[0] / dist * proj[0]);
|
||||
const float offset1 = -proj[8] + (hmd->eye[1].adjust[0] / dist * proj[0]);
|
||||
|
||||
float ortho[2][16];
|
||||
const float offsetx = width/2.0f;
|
||||
bx::mtxOrtho(ortho[0], centering, offsetx + centering, height + centering, centering, -1.0f, 1.0f, offset0);
|
||||
bx::mtxOrtho(ortho[1], centering, offsetx + centering, height + centering, centering, -1.0f, 1.0f, offset1);
|
||||
bgfx::setViewTransform(0, view, ortho[0], BGFX_VIEW_STEREO, ortho[1]);
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float ortho[16];
|
||||
bx::mtxOrtho(ortho, centering, width + centering, height + centering, centering, -1.0f, 1.0f);
|
||||
bgfx::setViewTransform(0, view, ortho);
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
// Submit the debug text.
|
||||
textBufferManager->submitTextBuffer(transientText, 0);
|
||||
|
|
|
@ -144,7 +144,13 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
, height
|
||||
);
|
||||
|
||||
imguiBeginScrollArea("Text Area", width - guiPanelWidth - 10, 10, guiPanelWidth, guiPanelHeight, &scrollArea);
|
||||
imguiBeginScrollArea("Text Area"
|
||||
, width - guiPanelWidth - 10
|
||||
, 10
|
||||
, guiPanelWidth
|
||||
, guiPanelHeight
|
||||
, &scrollArea
|
||||
);
|
||||
imguiSeparatorLine();
|
||||
|
||||
bool recomputeVisibleText = false;
|
||||
|
@ -192,19 +198,43 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Use a single distance field font to render text of various size.");
|
||||
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime) * toMs);
|
||||
|
||||
float at[3] = { 0, 0, 0.0f };
|
||||
float at[3] = { 0, 0, 0.0f };
|
||||
float eye[3] = {0, 0, -1.0f };
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
float centering = 0.5f;
|
||||
|
||||
const float centering = 0.5f;
|
||||
|
||||
// Setup a top-left ortho matrix for screen space drawing.
|
||||
bx::mtxOrtho(proj, centering, width + centering, height + centering, centering, -1.0f, 1.0f);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
static float time = 0.0f;
|
||||
time += 0.05f;
|
||||
|
||||
const float dist = 10.0f;
|
||||
const float offset0 = -proj[8] + (hmd->eye[0].adjust[0] / dist * proj[0]);
|
||||
const float offset1 = -proj[8] + (hmd->eye[1].adjust[0] / dist * proj[0]);
|
||||
|
||||
float ortho[2][16];
|
||||
const float viewOffset = width/4.0f;
|
||||
const float viewWidth = width/2.0f;
|
||||
bx::mtxOrtho(ortho[0], centering + viewOffset, centering + viewOffset + viewWidth, height + centering, centering, -1.0f, 1.0f, offset0);
|
||||
bx::mtxOrtho(ortho[1], centering + viewOffset, centering + viewOffset + viewWidth, height + centering, centering, -1.0f, 1.0f, offset1);
|
||||
bgfx::setViewTransform(0, view, ortho[0], BGFX_VIEW_STEREO, ortho[1]);
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float ortho[16];
|
||||
bx::mtxOrtho(ortho, centering, width + centering, height + centering, centering, -1.0f, 1.0f);
|
||||
bgfx::setViewTransform(0, view, ortho);
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
//very crude approximation :(
|
||||
float textAreaWidth = 0.5f * 66.0f * fontManager->getFontInfo(fontScaled).maxAdvanceWidth;
|
||||
|
|
|
@ -158,14 +158,37 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(0, 4, transitions ? 0x2f : 0x1f, transitions ? "Transitions on" : "Transitions off");
|
||||
|
||||
eye[2] = -distance;
|
||||
|
||||
float view[16];
|
||||
float proj[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxQuatTranslationHMD(view, hmd->eye[0].rotation, eye);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
//
|
||||
// Use HMD's width/height since HMD's internal frame buffer size
|
||||
// might be much larger than window size.
|
||||
bgfx::setViewRect(0, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float view[16];
|
||||
bx::mtxLookAt(view, eye, at);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, 60.0f, float(width)/float(height), 0.1f, 100.0f);
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
// Set view 0 default viewport.
|
||||
bgfx::setViewRect(0, 0, 0, width, height);
|
||||
}
|
||||
|
||||
float mtx[16];
|
||||
bx::mtxScale(mtx, 0.1f, 0.1f, 0.1f);
|
||||
|
|
|
@ -217,11 +217,6 @@ void setViewRectMask(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _wid
|
|||
}
|
||||
}
|
||||
|
||||
inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, float _far)
|
||||
{
|
||||
bx::mtxProj(_result, _fovy, _aspect, _near, _far, s_oglNdc);
|
||||
}
|
||||
|
||||
void mtxBillboard(float* __restrict _result
|
||||
, const float* __restrict _view
|
||||
, const float* __restrict _pos
|
||||
|
@ -2166,7 +2161,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
const float aspect = float(viewState.m_width)/float(viewState.m_height);
|
||||
const float nearPlane = 1.0f;
|
||||
const float farPlane = 1000.0f;
|
||||
mtxProj(viewState.m_proj, fov, aspect, nearPlane, farPlane);
|
||||
|
||||
float initialPos[3] = { 3.0f, 20.0f, -58.0f };
|
||||
cameraCreate();
|
||||
|
@ -2178,10 +2172,10 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
while (!entry::processEvents(viewState.m_width, viewState.m_height, debug, reset, &mouseState) )
|
||||
{
|
||||
// Respond properly on resize.
|
||||
if (oldWidth != viewState.m_width
|
||||
if (oldWidth != viewState.m_width
|
||||
|| oldHeight != viewState.m_height)
|
||||
{
|
||||
oldWidth = viewState.m_width;
|
||||
oldWidth = viewState.m_width;
|
||||
oldHeight = viewState.m_height;
|
||||
|
||||
bgfx::destroyFrameBuffer(s_stencilFb);
|
||||
|
@ -2204,7 +2198,25 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
|
||||
// Update camera.
|
||||
cameraUpdate(deltaTime, mouseState.m_mx, mouseState.m_my, !!mouseState.m_buttons[entry::MouseButton::Right]);
|
||||
cameraGetViewMtx(viewState.m_view);
|
||||
|
||||
// Set view and projection matrix for view 0.
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
float eye[3];
|
||||
cameraGetPosition(eye);
|
||||
|
||||
bx::mtxQuatTranslationHMD(viewState.m_view, hmd->eye[0].rotation, eye);
|
||||
bx::mtxProj(viewState.m_proj, hmd->eye[0].fov, nearPlane, farPlane, s_oglNdc);
|
||||
|
||||
viewState.m_width = hmd->width;
|
||||
viewState.m_height = hmd->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
cameraGetViewMtx(viewState.m_view);
|
||||
bx::mtxProj(viewState.m_proj, fov, aspect, nearPlane, farPlane, s_oglNdc);
|
||||
}
|
||||
|
||||
imguiBeginFrame(mouseState.m_mx
|
||||
, mouseState.m_my
|
||||
|
|
|
@ -65,10 +65,11 @@ namespace entry
|
|||
{
|
||||
if (_argc > 1)
|
||||
{
|
||||
if (setOrToggle(s_reset, "vsync", BGFX_RESET_VSYNC, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "hmd", BGFX_RESET_HMD, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "hmddbg", BGFX_RESET_HMD_DEBUG, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "msaa", BGFX_RESET_MSAA_X16, 1, _argc, _argv) )
|
||||
if (setOrToggle(s_reset, "vsync", BGFX_RESET_VSYNC, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "hmd", BGFX_RESET_HMD, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "hmddbg", BGFX_RESET_HMD_DEBUG, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "hmdrecenter", BGFX_RESET_HMD_RECENTER, 1, _argc, _argv)
|
||||
|| setOrToggle(s_reset, "msaa", BGFX_RESET_MSAA_X16, 1, _argc, _argv) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -116,6 +117,7 @@ namespace entry
|
|||
{ entry::Key::F1, entry::Modifier::LeftShift, 1, cmd, "graphics stats 0\ngraphics text 0" },
|
||||
{ entry::Key::F3, entry::Modifier::None, 1, cmd, "graphics wireframe" },
|
||||
{ entry::Key::F4, entry::Modifier::None, 1, cmd, "graphics hmd" },
|
||||
{ entry::Key::F4, entry::Modifier::LeftShift, 1, cmd, "graphics hmdrecenter" },
|
||||
{ entry::Key::F7, entry::Modifier::None, 1, cmd, "graphics vsync" },
|
||||
{ entry::Key::F8, entry::Modifier::None, 1, cmd, "graphics msaa" },
|
||||
{ entry::Key::Print, entry::Modifier::None, 1, cmd, "graphics screenshot" },
|
||||
|
|
|
@ -775,11 +775,37 @@ struct Imgui
|
|||
m_viewHeight = _height;
|
||||
bgfx::setViewName(_view, "IMGUI");
|
||||
bgfx::setViewSeq(_view, true);
|
||||
bgfx::setViewRect(_view, 0, 0, _width, _height);
|
||||
|
||||
float proj[16];
|
||||
bx::mtxOrtho(proj, 0.0f, (float)_width, (float)_height, 0.0f, 0.0f, 1000.0f);
|
||||
bgfx::setViewTransform(_view, NULL, proj);
|
||||
const bgfx::HMD* hmd = bgfx::getHMD();
|
||||
if (NULL != hmd)
|
||||
{
|
||||
m_viewWidth = _width / 2;
|
||||
|
||||
float proj[16];
|
||||
bx::mtxProj(proj, hmd->eye[0].fov, 0.1f, 100.0f);
|
||||
|
||||
static float time = 0.0f;
|
||||
time += 0.05f;
|
||||
|
||||
const float dist = 10.0f;
|
||||
const float offset0 = -proj[8] + (hmd->eye[0].adjust[0] / dist * proj[0]);
|
||||
const float offset1 = -proj[8] + (hmd->eye[1].adjust[0] / dist * proj[0]);
|
||||
|
||||
float ortho[2][16];
|
||||
const float viewOffset = _width/4.0f;
|
||||
const float viewWidth = _width/2.0f;
|
||||
bx::mtxOrtho(ortho[0], viewOffset, viewOffset + viewWidth, (float)m_viewHeight, 0.0f, 0.0f, 1000.0f, offset0);
|
||||
bx::mtxOrtho(ortho[1], viewOffset, viewOffset + viewWidth, (float)m_viewHeight, 0.0f, 0.0f, 1000.0f, offset1);
|
||||
bgfx::setViewTransform(_view, NULL, ortho[0], BGFX_VIEW_STEREO, ortho[1]);
|
||||
bgfx::setViewRect(_view, 0, 0, hmd->width, hmd->height);
|
||||
}
|
||||
else
|
||||
{
|
||||
float ortho[16];
|
||||
bx::mtxOrtho(ortho, 0.0f, (float)m_viewWidth, (float)m_viewHeight, 0.0f, 0.0f, 1000.0f);
|
||||
bgfx::setViewTransform(_view, NULL, ortho);
|
||||
bgfx::setViewRect(_view, 0, 0, _width, _height);
|
||||
}
|
||||
|
||||
updateInput(_mx, _my, _button, _scroll, _inputChar);
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
static const uint8_t vs_imgui_cubemap_glsl[345] =
|
||||
static const uint8_t vs_imgui_cubemap_glsl[329] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x03, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod
|
||||
0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj......
|
||||
0x34, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // 4...attribute hi
|
||||
0x24, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // $...attribute hi
|
||||
0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, // ghp vec4 a_norma
|
||||
0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // l;.attribute hig
|
||||
0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi
|
||||
|
@ -19,15 +19,14 @@ static const uint8_t vs_imgui_cubemap_glsl[345] =
|
|||
0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m
|
||||
0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t
|
||||
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, // mpvar_1);. v_no
|
||||
0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, // rmal = ((a_norma
|
||||
0x6c, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, // l.xyz * 2.0) - 1
|
||||
0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .0);.}...
|
||||
0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2e, // rmal = a_normal.
|
||||
0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // xyz;.}...
|
||||
};
|
||||
static const uint8_t vs_imgui_cubemap_dx9[351] =
|
||||
static const uint8_t vs_imgui_cubemap_dx9[319] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x03, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod
|
||||
0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj......
|
||||
0x3c, 0x01, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x23, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // <.......#.CTAB..
|
||||
0x1c, 0x01, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x23, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........#.CTAB..
|
||||
0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, // ..W.............
|
||||
0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, // ......P...0.....
|
||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......@.......u_
|
||||
|
@ -36,26 +35,24 @@ static const uint8_t vs_imgui_cubemap_dx9[351] =
|
|||
0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, // _3_0.Microsoft (
|
||||
0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, // R) HLSL Shader C
|
||||
0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, // ompiler 9.29.952
|
||||
0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, // .3111.Q.........
|
||||
0x00, 0x40, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, // .@..............
|
||||
0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
||||
0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................
|
||||
0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, 0x05, 0x00, // ................
|
||||
0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, // ............U...
|
||||
0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, // ................
|
||||
0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, // ................
|
||||
0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, // ................
|
||||
0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0xe0, 0x00, 0x00, // ................
|
||||
0xe4, 0x90, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x55, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ........U......
|
||||
0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, // .3111...........
|
||||
0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, // ................
|
||||
0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, // ................
|
||||
0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ....U...........
|
||||
0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................
|
||||
0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, // ................
|
||||
0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, // ................
|
||||
0x00, 0x02, 0x01, 0x00, 0x07, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ...............
|
||||
};
|
||||
static const uint8_t vs_imgui_cubemap_dx11[1322] =
|
||||
static const uint8_t vs_imgui_cubemap_dx11[1282] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x03, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod
|
||||
0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x00, 0xe0, 0x09, 0x04, 0x00, // elViewProj......
|
||||
0x00, 0x05, 0x44, 0x58, 0x42, 0x43, 0xed, 0x62, 0xaa, 0x7c, 0x5d, 0xd9, 0x88, 0xb4, 0x50, 0x90, // ..DXBC.b.|]...P.
|
||||
0xd6, 0x9c, 0x27, 0x23, 0xb3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, // ..'#............
|
||||
0xd8, 0x04, 0x44, 0x58, 0x42, 0x43, 0x94, 0xcf, 0xdb, 0x03, 0x98, 0x85, 0xe6, 0xbc, 0x80, 0x1c, // ..DXBC..........
|
||||
0x40, 0x81, 0x18, 0x33, 0x99, 0x36, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x04, 0x00, 0x00, 0x05, 0x00, // @..3.6..........
|
||||
0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x58, 0x03, // ..4...........X.
|
||||
0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x78, 0x02, 0x00, 0x00, 0x01, 0x00, // ......RDEFx.....
|
||||
0x00, 0x00, 0x5c, 0x04, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x78, 0x02, 0x00, 0x00, 0x01, 0x00, // ......RDEFx.....
|
||||
0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, // ..H.............
|
||||
0xfe, 0xff, 0x00, 0x91, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, // ......D...<.....
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
|
@ -105,8 +102,8 @@ static const uint8_t vs_imgui_cubemap_dx11[1322] =
|
|||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, // ..............D.
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO
|
||||
0x4e, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x24, 0x01, // N.NORMAL..SHDR$.
|
||||
0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x49, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..@...I...Y...F.
|
||||
0x4e, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0xfc, 0x00, // N.NORMAL..SHDR..
|
||||
0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..@...?...Y...F.
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // ........._...r.
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, // ......_...r.....
|
||||
0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..g.... ........
|
||||
|
@ -120,17 +117,15 @@ static const uint8_t vs_imgui_cubemap_dx11[1322] =
|
|||
0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F.
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ........... ....
|
||||
0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ...
|
||||
0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, // ......2...r ....
|
||||
0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // ..F........@....
|
||||
0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // .@...@...@.....@
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x06, 0x00, // ..>...STATt.....
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, // ......6...r ....
|
||||
0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, // ..F.......>...ST
|
||||
0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ATt.............
|
||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x30, 0x0a, // ........0.
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, // ................
|
||||
0x30, 0x0a, // 0.
|
||||
};
|
||||
|
|
|
@ -11,5 +11,5 @@ $output v_normal
|
|||
void main()
|
||||
{
|
||||
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
|
||||
v_normal = a_normal.xyz * 2.0f - 1.0f;
|
||||
v_normal = a_normal.xyz;
|
||||
}
|
||||
|
|
|
@ -266,6 +266,7 @@
|
|||
#define BGFX_RESET_CAPTURE UINT32_C(0x00000100)
|
||||
#define BGFX_RESET_HMD UINT32_C(0x00000200)
|
||||
#define BGFX_RESET_HMD_DEBUG UINT32_C(0x00000400)
|
||||
#define BGFX_RESET_HMD_RECENTER UINT32_C(0x00000800)
|
||||
|
||||
///
|
||||
#define BGFX_CAPS_TEXTURE_COMPARE_LEQUAL UINT64_C(0x0000000000000001)
|
||||
|
|
|
@ -217,7 +217,7 @@ namespace bgfx
|
|||
// create context will fail and it will error out there.
|
||||
BX_WARN(result, "SetPixelFormat failed (last err: 0x%08x)!", GetLastError() );
|
||||
|
||||
uint32_t flags = BGFX_CONFIG_DEBUG ? WGL_CONTEXT_DEBUG_BIT_ARB : 0;
|
||||
int32_t flags = BGFX_CONFIG_DEBUG ? WGL_CONTEXT_DEBUG_BIT_ARB : 0;
|
||||
BX_UNUSED(flags);
|
||||
int32_t contextAttrs[9] =
|
||||
{
|
||||
|
|
|
@ -1280,17 +1280,21 @@ RENDERDOC_IMPORT
|
|||
|
||||
void updateResolution(const Resolution& _resolution)
|
||||
{
|
||||
bool recenter = !!(_resolution.m_flags & BGFX_RESET_HMD_RECENTER);
|
||||
uint32_t flags = _resolution.m_flags & ~BGFX_RESET_HMD_RECENTER;
|
||||
|
||||
if ( (uint32_t)m_scd.BufferDesc.Width != _resolution.m_width
|
||||
|| (uint32_t)m_scd.BufferDesc.Height != _resolution.m_height
|
||||
|| m_flags != _resolution.m_flags)
|
||||
|| m_flags != flags)
|
||||
{
|
||||
bool resize = (m_flags&BGFX_RESET_MSAA_MASK) == (_resolution.m_flags&BGFX_RESET_MSAA_MASK);
|
||||
m_flags = _resolution.m_flags;
|
||||
bool resize = (m_flags&BGFX_RESET_MSAA_MASK) == (flags&BGFX_RESET_MSAA_MASK);
|
||||
m_flags = flags;
|
||||
|
||||
m_textVideoMem.resize(false, _resolution.m_width, _resolution.m_height);
|
||||
m_textVideoMem.clear();
|
||||
|
||||
m_resolution = _resolution;
|
||||
m_resolution.m_flags = flags;
|
||||
|
||||
m_scd.BufferDesc.Width = _resolution.m_width;
|
||||
m_scd.BufferDesc.Height = _resolution.m_height;
|
||||
|
@ -1323,6 +1327,11 @@ RENDERDOC_IMPORT
|
|||
|
||||
postReset();
|
||||
}
|
||||
|
||||
if (recenter)
|
||||
{
|
||||
m_ovr.recenter();
|
||||
}
|
||||
}
|
||||
|
||||
void setShaderConstant(uint8_t _flags, uint16_t _regIndex, const void* _val, uint16_t _numRegs)
|
||||
|
|
|
@ -1702,14 +1702,18 @@ namespace bgfx
|
|||
|
||||
void updateResolution(const Resolution& _resolution)
|
||||
{
|
||||
bool recenter = !!(_resolution.m_flags & BGFX_RESET_HMD_RECENTER);
|
||||
uint32_t flags = _resolution.m_flags & ~BGFX_RESET_HMD_RECENTER;
|
||||
|
||||
if (m_resolution.m_width != _resolution.m_width
|
||||
|| m_resolution.m_height != _resolution.m_height
|
||||
|| m_resolution.m_flags != _resolution.m_flags)
|
||||
|| m_resolution.m_flags != flags)
|
||||
{
|
||||
m_textVideoMem.resize(false, _resolution.m_width, _resolution.m_height);
|
||||
m_textVideoMem.clear();
|
||||
|
||||
m_resolution = _resolution;
|
||||
m_resolution.m_flags = flags;
|
||||
|
||||
uint32_t msaa = (m_resolution.m_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT;
|
||||
msaa = bx::uint32_min(m_maxMsaa, msaa == 0 ? 0 : 1<<msaa);
|
||||
|
@ -1720,6 +1724,11 @@ namespace bgfx
|
|||
ovrPreReset();
|
||||
ovrPostReset();
|
||||
}
|
||||
|
||||
if (recenter)
|
||||
{
|
||||
m_ovr.recenter();
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t setFrameBuffer(FrameBufferHandle _fbh, uint32_t _height, bool _msaa = true)
|
||||
|
|
Loading…
Add table
Reference in a new issue