summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/38-bloom/bloom.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/examples/38-bloom/bloom.cpp')
-rw-r--r--3rdparty/bgfx/examples/38-bloom/bloom.cpp92
1 files changed, 47 insertions, 45 deletions
diff --git a/3rdparty/bgfx/examples/38-bloom/bloom.cpp b/3rdparty/bgfx/examples/38-bloom/bloom.cpp
index 1de0111ca9b..99dcb730730 100644
--- a/3rdparty/bgfx/examples/38-bloom/bloom.cpp
+++ b/3rdparty/bgfx/examples/38-bloom/bloom.cpp
@@ -1,6 +1,6 @@
/*
- * Copyright 2018 Eric Arnebäck. All rights reserved.
- * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
+ * Copyright 2018 Eric Arnebäck. All rights reserved.
+ * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
*/
/*
@@ -13,7 +13,6 @@
#include "bgfx_utils.h"
#include "imgui/imgui.h"
#include "camera.h"
-#include "bounds.h"
namespace
{
@@ -43,16 +42,16 @@ struct PosVertex
static void init()
{
- ms_decl
+ ms_layout
.begin()
.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float)
.end();
}
- static bgfx::VertexDecl ms_decl;
+ static bgfx::VertexLayout ms_layout;
};
-bgfx::VertexDecl PosVertex::ms_decl;
+bgfx::VertexLayout PosVertex::ms_layout;
struct PosTexCoord0Vertex
{
@@ -64,17 +63,17 @@ struct PosTexCoord0Vertex
static void init()
{
- ms_decl
+ ms_layout
.begin()
.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float)
.add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float)
.end();
}
- static bgfx::VertexDecl ms_decl;
+ static bgfx::VertexLayout ms_layout;
};
-bgfx::VertexDecl PosTexCoord0Vertex::ms_decl;
+bgfx::VertexLayout PosTexCoord0Vertex::ms_layout;
constexpr float cs = 0.29f;
@@ -126,10 +125,10 @@ static const uint16_t s_cubeIndices[36] =
void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f)
{
- if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_decl) )
+ if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) )
{
bgfx::TransientVertexBuffer vb;
- bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_decl);
+ bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout);
PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data;
const float minx = -_width;
@@ -179,11 +178,11 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf
}
}
-class ExampleDeferred : public entry::AppI
+class ExampleBloom : public entry::AppI
{
public:
- ExampleDeferred(const char* _name, const char* _description)
- : entry::AppI(_name, _description)
+ ExampleBloom(const char* _name, const char* _description, const char* _url)
+ : entry::AppI(_name, _description, _url)
{
}
@@ -197,9 +196,11 @@ public:
m_reset = BGFX_RESET_VSYNC;
bgfx::Init init;
-
init.type = args.m_type;
init.vendorId = args.m_pciId;
+ init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle);
+ init.platformData.ndt = entry::getNativeDisplayHandle();
+ init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle);
init.resolution.width = m_width;
init.resolution.height = m_height;
init.resolution.reset = m_reset;
@@ -238,15 +239,15 @@ public:
// Create static vertex buffer.
m_vbh = bgfx::createVertexBuffer(
bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) )
- , PosVertex::ms_decl
+ , PosVertex::ms_layout
);
m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) );
- s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Int1);
- s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Int1);
- s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Int1);
- s_light = bgfx::createUniform("s_light", bgfx::UniformType::Int1);
+ s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler);
+ s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Sampler);
+ s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler);
+ s_light = bgfx::createUniform("s_light", bgfx::UniformType::Sampler);
u_pixelSize = bgfx::createUniform("u_pixelSize", bgfx::UniformType::Vec4);
u_intensity = bgfx::createUniform("u_intensity", bgfx::UniformType::Vec4);
u_color = bgfx::createUniform("u_color", bgfx::UniformType::Vec4);
@@ -283,8 +284,7 @@ public:
cameraCreate();
- const float initialPos[3] = { 0.0f, 0.0f, -15.0f };
- cameraSetPosition(initialPos);
+ cameraSetPosition({ 0.0f, 0.0f, -15.0f });
cameraSetVerticalAngle(0.0f);
}
@@ -398,11 +398,9 @@ public:
bgfx::destroy(m_texChainFb[ii]);
}
- const float dim = float(1 << ii);
-
m_texChainFb[ii] = bgfx::createFrameBuffer(
- (uint16_t)(m_width / dim)
- , (uint16_t)(m_height / dim)
+ (uint16_t)(m_width >> ii)
+ , (uint16_t)(m_height >> ii)
, bgfx::TextureFormat::RGBA32F
, tsFlags
);
@@ -412,7 +410,7 @@ public:
{
bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::RGBA32F, tsFlags),
bgfx::getTexture(m_texChainFb[0]),
- bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D24S8, tsFlags),
+ bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D32F, tsFlags),
};
m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(gbufferTex), gbufferTex, true);
@@ -436,7 +434,7 @@ public:
ImGui::End();
// Update camera.
- cameraUpdate(deltaTime, m_mouseState);
+ cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() );
float view[16];
cameraGetViewMtx(view);
@@ -448,21 +446,19 @@ public:
for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii)
{
- const float dim = float(1 << (ii + 1) );
-
+ const uint16_t shift = ii + 1;
bgfx::setViewRect(RENDER_PASS_DOWNSAMPLE0_ID + ii, 0, 0
- , uint16_t(m_width / dim)
- , uint16_t(m_height / dim)
+ , uint16_t(m_width >> shift)
+ , uint16_t(m_height >> shift)
);
}
for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii)
{
- const float dim = float(1 << (TEX_CHAIN_LEN - ii - 2) );
-
+ const uint16_t shift = TEX_CHAIN_LEN - ii - 2;
bgfx::setViewRect(RENDER_PASS_UPSAMPLE0_ID + ii, 0, 0
- , uint16_t(m_width / dim)
- , uint16_t(m_height / dim)
+ , uint16_t(m_width >> shift)
+ , uint16_t(m_height >> shift)
);
}
@@ -492,7 +488,9 @@ public:
const uint32_t kNum = 9;
const int kNumColors = 5;
const float color[4*kNumColors] =
- { // Palette: http://www.colourlovers.com/palette/3647908/RGB_Ice_Cream
+ { // Reference(s):
+ // - Palette
+ // https://web.archive.org/web/20180219034657/http://www.colourlovers.com/palette/3647908/RGB_Ice_Cream
0.847f*0.2f, 0.365f*0.2f, 0.408f*0.2f, 1.0f,
0.976f*0.2f, 0.827f*0.2f, 0.533f*0.2f, 1.0f,
0.533f*0.2f, 0.867f*0.2f, 0.741f*0.2f, 1.0f,
@@ -539,11 +537,11 @@ public:
// Now downsample.
for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii)
{
- const float dim = float(1 << (ii + 1) );
+ const uint16_t shift = ii + 1;
const float pixelSize[4] =
{
- 1.0f / (m_width / dim),
- 1.0f / (m_height / dim),
+ 1.0f / (float)(m_width >> shift),
+ 1.0f / (float)(m_height >> shift),
0.0f,
0.0f,
};
@@ -563,12 +561,11 @@ public:
// Now upsample.
for (uint16_t ii = 0; ii < TEX_CHAIN_LEN - 1; ++ii)
{
- const float dim = float(1 << (TEX_CHAIN_LEN - 2 - ii) );
-
+ const uint16_t shift = TEX_CHAIN_LEN - 2 - ii;
const float pixelSize[4] =
{
- 1.0f / (float)(m_width / dim),
- 1.0f / (float)(m_height / dim),
+ 1.0f / (float)(m_width >> shift),
+ 1.0f / (float)(m_height >> shift),
0.0f,
0.0f,
};
@@ -657,4 +654,9 @@ public:
} // namespace
-ENTRY_IMPLEMENT_MAIN(ExampleDeferred, "38-bloom", "Bloom.");
+ENTRY_IMPLEMENT_MAIN(
+ ExampleBloom
+ , "38-bloom"
+ , "Bloom."
+ , "https://bkaradzic.github.io/bgfx/examples.html#bloom"
+ );