Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
9532699
CubeMap
bigbike Nov 12, 2020
30ef2e8
minor
bigbike Nov 14, 2020
da000af
TODO: color map only
bigbike Nov 14, 2020
89164c2
minor
bigbike Nov 14, 2020
c66c689
minor
bigbike Nov 15, 2020
d4d149e
Merge branch 'master' into cubemap
bigbike Nov 15, 2020
1339614
minor
bigbike Nov 16, 2020
b3309fa
minor
bigbike Nov 16, 2020
21f2cba
debugging using viewer
bigbike Nov 16, 2020
c85b2f2
minor
bigbike Nov 16, 2020
21f2c3e
minor
bigbike Nov 16, 2020
19d78a1
Merge branch 'master' into cubemap
bigbike Nov 18, 2020
6a7eb5a
minor
bigbike Nov 23, 2020
c4f17f1
Merge branch 'master' into cubemap
bigbike Nov 23, 2020
9d100a2
minor
bigbike Nov 24, 2020
f82a6b2
minor
bigbike Nov 24, 2020
cc9fdcc
debugging
bigbike Nov 25, 2020
1a10490
debugging the shader_->draw(mesh_);
bigbike Nov 26, 2020
b1e6f2c
debugging the fisheye sensor
bigbike Nov 26, 2020
0cf87dd
minor, debugging
bigbike Dec 5, 2020
f45b8ed
minor
bigbike Dec 6, 2020
c816b41
Merge branch 'master' into cubemap
bigbike Dec 6, 2020
6e7159a
minor debugging - can see fisheye effect
bigbike Dec 7, 2020
444c9aa
debugging, the seam on the boundary
bigbike Dec 8, 2020
8daa818
fisheyesensor is working now. missing generateMipmap before
bigbike Dec 11, 2020
1b75d9a
minor
bigbike Dec 12, 2020
991e5c1
minor
bigbike Dec 12, 2020
7d8202d
Merge branch 'master' into cubemap
bigbike Dec 12, 2020
2a3059b
minor
bigbike Dec 12, 2020
109d7de
minor
bigbike Dec 13, 2020
489b236
minor
bigbike Dec 13, 2020
eea98fd
minor
bigbike Dec 27, 2020
7839189
Merge branch 'master' into cubemap
bigbike Dec 27, 2020
5b7afd4
webgl
bigbike Dec 28, 2020
0cf748e
Merge branch 'master' into cubemap
bigbike Dec 29, 2020
6183e9a
minor
bigbike Dec 30, 2020
4a55f0c
address reviwer's concerns
bigbike Dec 30, 2020
2934036
Merge branch 'master' into cubemap
bigbike Jan 6, 2021
e855b90
Merge branch 'master' into cubemap
bigbike Jan 12, 2021
06af285
minor
bigbike Jan 23, 2021
5ab1893
Merge branch 'master' into cubemap
bigbike Jan 23, 2021
fbeeb19
minor
bigbike Jan 24, 2021
c334225
minor
bigbike Jan 24, 2021
93199c2
minor
bigbike Jan 28, 2021
da62eb7
Merge branch 'master' into cubemap
bigbike Jan 28, 2021
1c6eeeb
add visualization of depth sensor
bigbike Jan 30, 2021
2837700
minor
bigbike Jan 30, 2021
0b8d7d4
Merge branch 'master' into cubemap
bigbike Jan 30, 2021
6c5de10
minor
bigbike Jan 31, 2021
b4d0e61
debug cubemap save/load textures for depth texture
bigbike Jan 31, 2021
a68ad92
debugging
bigbike Feb 1, 2021
4a827eb
Merge branch 'master' into cubemap
bigbike Feb 13, 2021
1c67be9
Merge branch 'master' into cubemap
bigbike Feb 16, 2021
d26c1b9
6 fbo
bigbike Feb 16, 2021
4e5d403
fix bug
bigbike Feb 16, 2021
a069ce1
minor
bigbike Feb 16, 2021
4f674bd
Merge branch 'cubemap-6fbo' into cubemap
bigbike Feb 17, 2021
876e724
minor
bigbike Feb 17, 2021
4070bc4
Merge branch 'cubemap-6fbo' into cubemap
bigbike Feb 17, 2021
d217836
minor
bigbike Feb 17, 2021
5f8f3d4
Merge branch 'master' into cubemap
bigbike Feb 17, 2021
b64ff78
minor
bigbike Feb 17, 2021
3a2f21b
debugging save / load
bigbike Feb 18, 2021
8fa38dd
clean up
bigbike Feb 21, 2021
22f72ad
Merge branch 'master' into cubemap
bigbike Feb 24, 2021
c64326f
debug
bigbike Feb 24, 2021
bf4ca18
minor
bigbike Feb 25, 2021
6ea8733
minor
bigbike Feb 25, 2021
0dcb6fb
minor
bigbike Feb 26, 2021
d65d416
Merge branch 'master' into cubemap
bigbike Feb 26, 2021
93108e0
Merge branch 'master' into cubemap
bigbike Feb 27, 2021
7394424
Merge branch 'master' into cubemap
bigbike Mar 3, 2021
0b8f43e
Merge branch 'master' into cubemap
bigbike Mar 6, 2021
ba25971
minor
bigbike Mar 6, 2021
0da71f2
optimization
bigbike Mar 6, 2021
2ec2b9e
minor
bigbike Mar 6, 2021
0ffa5ab
minor
bigbike Mar 7, 2021
310492c
js
bigbike Mar 7, 2021
72cc970
minor
bigbike Mar 7, 2021
b52c6c5
minor
bigbike Mar 7, 2021
1ece0f2
minor
bigbike Mar 7, 2021
ab101b6
minor
bigbike Mar 7, 2021
2cb5c4d
minor
bigbike Mar 7, 2021
addb0dc
minor
bigbike Mar 7, 2021
5a23651
minor
bigbike Mar 7, 2021
d7c3d17
minor
bigbike Mar 7, 2021
d35b804
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
1204a8b
Merge branch 'master' into cubemap
bigbike Mar 9, 2021
a57ba8c
minor
bigbike Mar 9, 2021
5030cbd
minor
bigbike Mar 13, 2021
baf518e
Merge branch 'master' into cubemap
bigbike Mar 13, 2021
4284864
minor
bigbike Mar 7, 2021
c7357f6
minor
bigbike Mar 7, 2021
2f3f51a
minor
bigbike Mar 7, 2021
4b98a03
minor
bigbike Mar 7, 2021
958fa1a
minor
bigbike Mar 7, 2021
ef4c649
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
74b042b
minor
bigbike Mar 9, 2021
04758fd
Merge branch 'cubemap-pr' of github.com:facebookresearch/habitat-sim …
bigbike Mar 13, 2021
2562e4d
minor
bigbike Mar 16, 2021
a20cdc2
minor
bigbike Mar 19, 2021
e50e296
Merge branch 'master' into cubemap
bigbike Mar 19, 2021
a895fd5
minor
bigbike Mar 19, 2021
f564f9a
minor
bigbike Mar 7, 2021
21738ce
minor
bigbike Mar 7, 2021
0b10063
minor
bigbike Mar 7, 2021
4a9da9d
minor
bigbike Mar 7, 2021
bda08b6
minor
bigbike Mar 7, 2021
e394a95
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
9112601
minor
bigbike Mar 9, 2021
6c086e6
minor
bigbike Mar 7, 2021
e634995
minor
bigbike Mar 7, 2021
78ff9e2
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
7e13726
Merge branch 'cubemap-pr' of github.com:facebookresearch/habitat-sim …
bigbike Mar 19, 2021
4208e8a
minor
bigbike Mar 19, 2021
8f464c6
minor
bigbike Mar 19, 2021
ae5e648
minor
bigbike Mar 19, 2021
042f56a
minor
bigbike Mar 19, 2021
ea47949
minor
bigbike Mar 19, 2021
2ee6138
minor
bigbike Mar 19, 2021
fae1fb4
minor
bigbike Mar 20, 2021
74beb1a
Merge branch 'master' into cubemap
bigbike Mar 20, 2021
c8eab7e
fix shader to make it compatible with webGL
bigbike Mar 24, 2021
6717b79
Merge branch 'master' into cubemap
bigbike Mar 24, 2021
4a0cd6d
minor
bigbike Mar 7, 2021
4bb8367
minor
bigbike Mar 24, 2021
f19eaf6
minor
bigbike Mar 7, 2021
a9c8115
minor
bigbike Mar 7, 2021
2c03d72
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
43e9cb5
minor
bigbike Mar 9, 2021
8cd7ae4
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
d85b57c
minor
bigbike Mar 7, 2021
da0d6a7
minor
bigbike Mar 7, 2021
bd192b8
minor
bigbike Mar 7, 2021
ba7359e
minor
bigbike Mar 7, 2021
985321d
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
5dba29e
minor
bigbike Mar 24, 2021
a4291d7
minor
bigbike Mar 9, 2021
c5496b0
minor
bigbike Mar 7, 2021
7553788
minor
bigbike Mar 7, 2021
730baf9
minor
bigbike Mar 7, 2021
598fbde
fix fetal bugs when viewpoprt changes
bigbike Mar 9, 2021
184129c
minor
bigbike Mar 19, 2021
ebda3aa
minor
bigbike Mar 19, 2021
ae45d58
minor
bigbike Mar 19, 2021
aaefb0c
minor
bigbike Mar 19, 2021
4d0fd0b
minor
bigbike Mar 19, 2021
dd9b27c
minor
bigbike Mar 19, 2021
d04d164
minor
bigbike Mar 24, 2021
1689cbc
Merge branch 'cubemap-pr' of github.com:facebookresearch/habitat-sim …
bigbike Mar 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/esp/gfx/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
set(
gfx_SOURCES
CubeMap.cpp
CubeMap.h
DepthUnprojection.cpp
DepthUnprojection.h
Drawable.cpp
Expand Down Expand Up @@ -41,6 +43,10 @@ set(
PbrShader.h
PbrDrawable.cpp
PbrDrawable.h
DoubleSphereCameraShader.cpp
DoubleSphereCameraShader.h
FisheyeShader.cpp
FisheyeShader.h
)

# If ptex support is enabled add relevant source files
Expand Down
2 changes: 2 additions & 0 deletions src/esp/gfx/CubeMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ void CubeMap::recreateTexture() {
// color texture
if (flags_ & Flag::ColorTexture) {
auto& colorTexture = texture(TextureType::Color);
Comment thread
bigbike marked this conversation as resolved.
colorTexture = Mn::GL::CubeMapTexture{};
colorTexture.setWrapping(Mn::GL::SamplerWrapping::ClampToEdge)
.setMinificationFilter(Mn::GL::SamplerFilter::Linear,
Mn::GL::SamplerMipmap::Linear)
Expand All @@ -172,6 +173,7 @@ void CubeMap::recreateTexture() {
// depth texture
if (flags_ & Flag::DepthTexture) {
auto& depthTexture = texture(TextureType::Depth);
depthTexture = Mn::GL::CubeMapTexture{};
depthTexture.setWrapping(Mn::GL::SamplerWrapping::ClampToEdge)
.setMinificationFilter(Mn::GL::SamplerFilter::Nearest)
.setMagnificationFilter(Mn::GL::SamplerFilter::Nearest)
Expand Down
1 change: 0 additions & 1 deletion src/esp/gfx/CubeMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ class CubeMap {
// TODO: ObjectId
// TODO: HDR color

// you will have to update it when new type is added
Count,
};

Expand Down
120 changes: 120 additions & 0 deletions src/esp/gfx/DoubleSphereCameraShader.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
// Copyright (c) Facebook, Inc. and its affiliates.
// This source code is licensed under the MIT license found in the
// LICENSE file in the root directory of this source tree.
#include "DoubleSphereCameraShader.h"

#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/Resource.h>
#include <Magnum/GL/Shader.h>
#include <Magnum/GL/Texture.h>
#include <Magnum/GL/Version.h>

#include <sstream>

// This is to import the "resources" at runtime. When the resource is
// compiled into static library, it must be explicitly initialized via this
// macro, and should be called *outside* of any namespace.
static void importShaderResources() {
CORRADE_RESOURCE_INITIALIZE(ShaderResources)
}

namespace Mn = Magnum;
namespace Cr = Corrade;

namespace esp {
namespace gfx {
DoubleSphereCameraShader::DoubleSphereCameraShader(FisheyeShader::Flags flags)
: FisheyeShader(flags) {
if (!Cr::Utility::Resource::hasGroup("default-shaders")) {
importShaderResources();
}

#ifdef MAGNUM_TARGET_WEBGL
Mn::GL::Version glVersion = Mn::GL::Version::GLES300;
#else
Mn::GL::Version glVersion = Mn::GL::Version::GL410;
#endif

// this is not the file name, but the group name in the config file
// see Shaders.conf in the shaders folder
const Cr::Utility::Resource rs{"default-shaders"};

Mn::GL::Shader vert{glVersion, Mn::GL::Shader::Type::Vertex};
Mn::GL::Shader frag{glVersion, Mn::GL::Shader::Type::Fragment};

// Add macros
vert.addSource(rs.get("bigTriangle.vert"));

std::stringstream outputAttributeLocationsStream;

if (flags_ & FisheyeShader::Flag::ColorTexture) {
outputAttributeLocationsStream << Cr::Utility::formatString(
"#define OUTPUT_ATTRIBUTE_LOCATION_COLOR {}\n", ColorOutput);
}
/* TODO:
outputAttributeLocationsStream << Cr::Utility::formatString(
"#define OUTPUT_ATTRIBUTE_LOCATION_OBJECT_ID {}\n", ObjectIdOutput);
*/

frag.addSource(outputAttributeLocationsStream.str())
.addSource(flags_ & FisheyeShader::Flag::ColorTexture
? "#define COLOR_TEXTURE\n"
: "")
.addSource(flags_ & FisheyeShader::Flag::DepthTexture
? "#define DEPTH_TEXTURE\n"
: "")
.addSource(rs.get("doubleSphereCamera.frag"));

CORRADE_INTERNAL_ASSERT_OUTPUT(Mn::GL::Shader::compile({vert, frag}));

attachShaders({vert, frag});

CORRADE_INTERNAL_ASSERT_OUTPUT(link());

// set texture binding points in the shader
if (flags_ & FisheyeShader::Flag::ColorTexture) {
setUniform(uniformLocation("ColorTexture"),
fisheyeShaderTexUnitSpace::TextureUnit::Color);
}
if (flags_ & FisheyeShader::Flag::DepthTexture) {
setUniform(uniformLocation("DepthTexture"),
fisheyeShaderTexUnitSpace::TextureUnit::Depth);
}
// TODO: handle the other flags, ObjectIdTexture

// cache the uniform locations
// it hurts the performance to call glGetUniformLocation() every frame due
// to string operations. therefore, cache the locations in the constructor

focalLengthUniform_ = uniformLocation("FocalLength");
principalPointOffsetUniform_ = uniformLocation("PrincipalPointOffset");
alphaUniform_ = uniformLocation("Alpha");
xiUniform_ = uniformLocation("Xi");
}

DoubleSphereCameraShader& DoubleSphereCameraShader::setFocalLength(
Magnum::Vector2 focalLength) {
setUniform(focalLengthUniform_, focalLength);
return *this;
}

DoubleSphereCameraShader& DoubleSphereCameraShader::setPrincipalPointOffset(
Magnum::Vector2 offset) {
setUniform(principalPointOffsetUniform_, offset);
return *this;
}

DoubleSphereCameraShader& DoubleSphereCameraShader::setAlpha(float alpha) {
setUniform(alphaUniform_, alpha);
return *this;
}

DoubleSphereCameraShader& DoubleSphereCameraShader::setXi(float xi) {
setUniform(xiUniform_, xi);
return *this;
}

} // namespace gfx
} // namespace esp
85 changes: 85 additions & 0 deletions src/esp/gfx/DoubleSphereCameraShader.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// Copyright (c) Facebook, Inc. and its affiliates.
// This source code is licensed under the MIT license found in the
// LICENSE file in the root directory of this source tree.

#ifndef ESP_GFX_DOUBLESPHERECAMERASHADER_H_
#define ESP_GFX_DOUBLESPHERECAMERASHADER_H_

#include <Corrade/Containers/EnumSet.h>
#include <Magnum/Shaders/Generic.h>

#include "FisheyeShader.h"
#include "esp/core/esp.h"

namespace esp {
namespace gfx {
class DoubleSphereCameraShader : public FisheyeShader {
public:
enum : Magnum::UnsignedInt {
/**
* Color shader output. @ref shaders-generic "Generic output",
* present always. Expects three- or four-component floating-point
* or normalized buffer attachment.
*/
ColorOutput = Magnum::Shaders::Generic3D::ColorOutput,

// TODO
/**
* Object ID shader output. @ref shaders-generic "Generic output",
* present only if @ref FisheyeShader::Flag::ObjectId is set. Expects a
* single-component unsigned integral attachment. Writes the value
* set in @ref setObjectId() there.
*/
// ObjectIdOutput = Magnum::Shaders::Generic3D::ObjectIdOutput,
};

explicit DoubleSphereCameraShader(FisheyeShader::Flags flags = {
FisheyeShader::Flag::ColorTexture});

/**
* @brief Set the focal length of the fisheye camera
* @param focalLength, the focal length x, y directions
* @return Reference to self (for method chaining)
*/
DoubleSphereCameraShader& setFocalLength(Magnum::Vector2 focalLength);
/**
* @brief Set the offset of the principal point of the fisheye camera
* @param offset, the offset of the principal point in pixels
* @return Reference to self (for method chaining)
*/
DoubleSphereCameraShader& setPrincipalPointOffset(Magnum::Vector2 offset);
/**
* @brief Set the alpha value in the "Double Sphere Camera" model.
* See details in:
* Vladyslav Usenko, Nikolaus Demmel and Daniel Cremers: The Double Sphere
* Camera Model, The International Conference on 3D Vision (3DV), 2018
* @param alpha, the alpha value (0.0 <= alpha < 1.0)
* @return Reference to self (for method chaining)
*/
DoubleSphereCameraShader& setAlpha(float alpha);

/**
* @brief Set the Xi value in the "Double Sphere Camera" model.
* See details in:
* Vladyslav Usenko, Nikolaus Demmel and Daniel Cremers: The Double Sphere
* Camera Model, The International Conference on 3D Vision (3DV), 2018
* @param xi, the Xi value
* @return Reference to self (for method chaining)
*/
DoubleSphereCameraShader& setXi(float xi);

/**
* @brief deconstructor
*/
~DoubleSphereCameraShader() override = default;

protected:
int focalLengthUniform_ = ID_UNDEFINED;
int principalPointOffsetUniform_ = ID_UNDEFINED;
int alphaUniform_ = ID_UNDEFINED;
int xiUniform_ = ID_UNDEFINED;
};

} // namespace gfx
} // namespace esp
#endif
44 changes: 44 additions & 0 deletions src/esp/gfx/FisheyeShader.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright (c) Facebook, Inc. and its affiliates.
// This source code is licensed under the MIT license found in the
// LICENSE file in the root directory of this source tree.
#include "FisheyeShader.h"

#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/Resource.h>
#include <Magnum/GL/Shader.h>
#include <Magnum/GL/Texture.h>
#include <Magnum/GL/Version.h>

namespace Mn = Magnum;
namespace Cr = Corrade;

namespace esp {
namespace gfx {
FisheyeShader::FisheyeShader(Flags flags) : flags_(flags) {
CORRADE_ASSERT(flags != Flags{},
"FisheyeShader::FisheyeShader(): shader "
"flags cannot be empty.", );
}
FisheyeShader& FisheyeShader::bindColorTexture(
Mn::GL::CubeMapTexture& texture) {
CORRADE_ASSERT(flags_ & FisheyeShader::Flag::ColorTexture,
"FisheyeShader::bindColorTexture(): the shader was not "
"created with color texture enabled",
*this);
texture.bind(fisheyeShaderTexUnitSpace::TextureUnit::Color);
return *this;
}

FisheyeShader& FisheyeShader::bindDepthTexture(
Mn::GL::CubeMapTexture& texture) {
CORRADE_ASSERT(flags_ & FisheyeShader::Flag::DepthTexture,
"FisheyeShader::bindDepthTexture(): the shader was not "
"created with depth texture enabled",
*this);
texture.bind(fisheyeShaderTexUnitSpace::TextureUnit::Depth);
return *this;
}

} // namespace gfx
} // namespace esp
97 changes: 97 additions & 0 deletions src/esp/gfx/FisheyeShader.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// Copyright (c) Facebook, Inc. and its affiliates.
// This source code is licensed under the MIT license found in the
// LICENSE file in the root directory of this source tree.

#ifndef ESP_GFX_FISHEYESHADER_H_
#define ESP_GFX_FISHEYESHADER_H_

#include <Corrade/Containers/EnumSet.h>
#include <Corrade/Utility/Macros.h>
#include <Magnum/GL/AbstractShaderProgram.h>
#include <Magnum/GL/CubeMapTexture.h>
#include <Magnum/Shaders/Generic.h>

#include "esp/core/esp.h"

namespace esp {
namespace gfx {
namespace fisheyeShaderTexUnitSpace {
enum TextureUnit : uint8_t {
Color = 0,
Depth = 1,
// TODO
// ObjectId = 2,
};
}
// Interface class for various fisheye camera shaders, such as "Double Sphere
// Camera", "Field-of-View Camera", etc.
class FisheyeShader : public Magnum::GL::AbstractShaderProgram {
public:
enum : Magnum::UnsignedInt {
/**
* Color shader output. @ref shaders-generic "Generic output",
* present always. Expects three- or four-component floating-point
* or normalized buffer attachment.
*/
ColorOutput = Magnum::Shaders::Generic3D::ColorOutput,

// TODO
/**
* Object ID shader output. @ref shaders-generic "Generic output",
* present only if @ref Flag::ObjectId is set. Expects a
* single-component unsigned integral attachment. Writes the value
* set in @ref setObjectId() there.
*/
// ObjectIdOutput = Magnum::Shaders::Generic3D::ObjectIdOutput,
};

/**
* @brief Flag
*
* @see @ref Flags, @ref flags()
*/
enum class Flag : Magnum::UnsignedShort {
/**
* cubemap color texture
*/
ColorTexture = 1 << 0,
/**
* cubemap depth texture
*/
DepthTexture = 1 << 1,
// ObjectIdTexture = 1 << 2,
};

typedef Corrade::Containers::EnumSet<Flag> Flags;

/**
* @brief constructor
* @param[in] flags fisheye shader flags
*/
explicit FisheyeShader(Flags flags = {Flag::ColorTexture});

~FisheyeShader() override = default;

/** @brief Flags */
Flags flags() const { return flags_; }

/**
* @brief bind cubemap color texture
* @param[in] texture cubemap color texture
*/
virtual FisheyeShader& bindColorTexture(Magnum::GL::CubeMapTexture& texture);
/**
* @brief bind cubemap depth texture
* @param[in] texture cubemap depth texture
*/
virtual FisheyeShader& bindDepthTexture(Magnum::GL::CubeMapTexture& texture);
// virtual FisheyeShader& bindObjectIdTexture(Magnum::GL::Texture2D&
// texture);

protected:
Flags flags_;
};
CORRADE_ENUMSET_OPERATORS(FisheyeShader::Flags)
} // namespace gfx
} // namespace esp
#endif
Loading