|
@@ -16,7 +16,6 @@
|
|
|
#define RENDER_PASS_DEBUG_GBUFFER_ID 4
|
|
#define RENDER_PASS_DEBUG_GBUFFER_ID 4
|
|
|
|
|
|
|
|
static float s_texelHalf = 0.0f;
|
|
static float s_texelHalf = 0.0f;
|
|
|
-static bool s_originBottomLeft = false;
|
|
|
|
|
|
|
|
|
|
struct PosNormalTangentTexcoordVertex
|
|
struct PosNormalTangentTexcoordVertex
|
|
|
{
|
|
{
|
|
@@ -218,7 +217,7 @@ class ExampleDeferred : public entry::AppI
|
|
|
void init(int _argc, char** _argv) BX_OVERRIDE
|
|
void init(int _argc, char** _argv) BX_OVERRIDE
|
|
|
{
|
|
{
|
|
|
Args args(_argc, _argv);
|
|
Args args(_argc, _argv);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
m_width = 1280;
|
|
m_width = 1280;
|
|
|
m_height = 720;
|
|
m_height = 720;
|
|
|
m_debug = BGFX_DEBUG_TEXT;
|
|
m_debug = BGFX_DEBUG_TEXT;
|
|
@@ -311,7 +310,6 @@ class ExampleDeferred : public entry::AppI
|
|
|
m_timeOffset = bx::getHPCounter();
|
|
m_timeOffset = bx::getHPCounter();
|
|
|
const bgfx::RendererType::Enum renderer = bgfx::getRendererType();
|
|
const bgfx::RendererType::Enum renderer = bgfx::getRendererType();
|
|
|
s_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f;
|
|
s_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f;
|
|
|
- s_originBottomLeft = bgfx::RendererType::OpenGL == renderer || bgfx::RendererType::OpenGLES == renderer;
|
|
|
|
|
|
|
|
|
|
// Get renderer capabilities info.
|
|
// Get renderer capabilities info.
|
|
|
m_caps = bgfx::getCaps();
|
|
m_caps = bgfx::getCaps();
|
|
@@ -501,7 +499,7 @@ class ExampleDeferred : public entry::AppI
|
|
|
bgfx::setViewFrameBuffer(RENDER_PASS_LIGHT_ID, m_lightBuffer);
|
|
bgfx::setViewFrameBuffer(RENDER_PASS_LIGHT_ID, m_lightBuffer);
|
|
|
|
|
|
|
|
float proj[16];
|
|
float proj[16];
|
|
|
- bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, s_originBottomLeft);
|
|
|
|
|
|
|
+ bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, m_caps->homogeneousDepth);
|
|
|
|
|
|
|
|
bgfx::setViewFrameBuffer(RENDER_PASS_GEOMETRY_ID, m_gbuffer);
|
|
bgfx::setViewFrameBuffer(RENDER_PASS_GEOMETRY_ID, m_gbuffer);
|
|
|
bgfx::setViewTransform(RENDER_PASS_GEOMETRY_ID, view, proj);
|
|
bgfx::setViewTransform(RENDER_PASS_GEOMETRY_ID, view, proj);
|
|
@@ -695,7 +693,7 @@ class ExampleDeferred : public entry::AppI
|
|
|
| BGFX_STATE_ALPHA_WRITE
|
|
| BGFX_STATE_ALPHA_WRITE
|
|
|
| BGFX_STATE_BLEND_ADD
|
|
| BGFX_STATE_BLEND_ADD
|
|
|
);
|
|
);
|
|
|
- screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, s_originBottomLeft);
|
|
|
|
|
|
|
+ screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft);
|
|
|
bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightProgram);
|
|
bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightProgram);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -707,7 +705,7 @@ class ExampleDeferred : public entry::AppI
|
|
|
| BGFX_STATE_RGB_WRITE
|
|
| BGFX_STATE_RGB_WRITE
|
|
|
| BGFX_STATE_ALPHA_WRITE
|
|
| BGFX_STATE_ALPHA_WRITE
|
|
|
);
|
|
);
|
|
|
- screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, s_originBottomLeft);
|
|
|
|
|
|
|
+ screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft);
|
|
|
bgfx::submit(RENDER_PASS_COMBINE_ID, m_combineProgram);
|
|
bgfx::submit(RENDER_PASS_COMBINE_ID, m_combineProgram);
|
|
|
|
|
|
|
|
if (m_showGBuffer)
|
|
if (m_showGBuffer)
|