Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4412f00

Browse files
committedFeb 23, 2024·
update
1 parent 449780f commit 4412f00

File tree

6 files changed

+27
-19
lines changed

6 files changed

+27
-19
lines changed
 

‎examples/misc/cubemap.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ int main() {
2222
Canvas canvas("Cubemap");
2323
GLRenderer renderer(canvas.size());
2424

25-
PerspectiveCamera camera(50, canvas.aspect(), 1, 5000);
25+
PerspectiveCamera camera(50, canvas.aspect(), 1, 50000);
2626
camera.position.z = 2000;
2727

2828
std::filesystem::path path("data/textures/cube/SwedishRoyalCastle");

‎src/threepp/renderers/GLCubeRenderTarget.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ namespace threepp {
8888

8989
material->name = "CubemapFromEquirect";
9090

91-
material->uniforms = std::make_shared<UniformMap>(shader.uniforms);
91+
material->uniforms = shader.uniforms;
9292
material->vertexShader = shader.vertexShader;
9393
material->fragmentShader = shader.fragmentShader;
9494
material->side = Side::Back;
9595
material->blending = Blending::None;
9696

97-
material->uniforms->at("tEquirect").setValue(&texture);
97+
material->uniforms.at("tEquirect").setValue(&texture);
9898

9999
auto mesh = Mesh(geometry, material);
100100

‎src/threepp/renderers/GLRenderer.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ struct GLRenderer::Impl {
6969
gl::GLState state;
7070

7171

72-
std::shared_ptr<Scene> _emptyScene;
72+
std::unique_ptr<Scene> _emptyScene;
7373

7474
OnMaterialDispose onMaterialDispose;
7575

@@ -140,6 +140,7 @@ struct GLRenderer::Impl {
140140

141141
Impl(GLRenderer& scope, WindowSize size, const GLRenderer::Parameters& parameters)
142142
: scope(scope), _size(size),
143+
cubemaps(scope),
143144
bufferRenderer(std::make_unique<gl::GLBufferRenderer>(_info)),
144145
indexedBufferRenderer(std::make_unique<gl::GLIndexedBufferRenderer>(_info)),
145146
clipping(properties),
@@ -153,7 +154,7 @@ struct GLRenderer::Impl {
153154
background(scope, cubemaps, state, objects, parameters.premultipliedAlpha),
154155
programCache(bindingStates, clipping),
155156
_currentDrawBuffers(GL_BACK),
156-
_emptyScene(Scene::create()),
157+
_emptyScene(std::make_unique<Scene>()),
157158
onMaterialDispose(this) {
158159

159160
this->setViewport(0, 0, size.width, size.height);
@@ -1149,7 +1150,7 @@ struct GLRenderer::Impl {
11491150
GLRenderer::GLRenderer(WindowSize size, const GLRenderer::Parameters& parameters) {
11501151

11511152
#ifndef EMSCRIPTEN
1152-
loadGlad(); // if Glad has yet to be loaded, do it now
1153+
loadGlad();// if Glad has yet to be loaded, do it now
11531154
#endif
11541155

11551156
pimpl_ = std::make_unique<Impl>(*this, size, parameters);

‎src/threepp/renderers/gl/GLBackground.cpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
#include "threepp/renderers/gl/GLBackground.hpp"
33
#include "threepp/renderers/gl/GLCubeMaps.hpp"
44
#include "threepp/renderers/gl/GLObjects.hpp"
5-
#include "threepp/renderers/gl/GLState.hpp"
65
#include "threepp/renderers/gl/GLRenderLists.hpp"
6+
#include "threepp/renderers/gl/GLState.hpp"
77

88
#include "threepp/renderers/GLRenderer.hpp"
99

@@ -58,15 +58,15 @@ void GLBackground::render(GLRenderList& renderList, Object3D* scene) {
5858
if (!boxMesh) {
5959
auto shaderMaterial = ShaderMaterial::create();
6060
shaderMaterial->name = "BackgroundCubeMaterial";
61-
shaderMaterial->uniforms = std::make_shared<UniformMap>(shaders::ShaderLib::instance().cube.uniforms);
61+
shaderMaterial->uniforms = shaders::ShaderLib::instance().cube.uniforms;
6262
shaderMaterial->vertexShader = shaders::ShaderLib::instance().cube.vertexShader;
6363
shaderMaterial->fragmentShader = shaders::ShaderLib::instance().cube.fragmentShader;
6464
shaderMaterial->side = Side::Back;
6565
shaderMaterial->depthTest = false;
6666
shaderMaterial->depthWrite = false;
6767
shaderMaterial->fog = false;
6868

69-
auto geometry = BoxGeometry::create(1, 1, 1);
69+
auto geometry = BoxGeometry::create(100, 100, 100);
7070
geometry->deleteAttribute("normal");
7171
geometry->deleteAttribute("uv");
7272

@@ -75,18 +75,18 @@ void GLBackground::render(GLRenderList& renderList, Object3D* scene) {
7575
boxMesh->onBeforeRender = [&](void*, Object3D*, Camera* camera, BufferGeometry*, Material*, std::optional<GeometryGroup>) {
7676
boxMesh->matrixWorld->copyPosition(*camera->matrixWorld);
7777
};
78-
}
7978

80-
objects.update(boxMesh.get());
81-
}
79+
objects.update(boxMesh.get());
8280

83-
auto shaderMaterial = boxMesh->material()->as<ShaderMaterial>();
84-
shaderMaterial->uniforms->at("envMap").setValue(_background->texture());
85-
shaderMaterial->uniforms->at("flipEnvMap").setValue(true);
86-
shaderMaterial->needsUpdate();
81+
shaderMaterial->needsUpdate();
82+
}
8783

88-
renderList.unshift(boxMesh.get(), boxMesh->geometry(), boxMesh->material(), 0, 0, std::nullopt);
84+
auto shaderMaterial = boxMesh->material()->as<ShaderMaterial>();
85+
shaderMaterial->uniforms.at("envMap").setValue(_background->texture());
86+
shaderMaterial->uniforms.at("flipEnvMap").setValue(true);
8987

88+
renderList.unshift(boxMesh.get(), boxMesh->geometry(), boxMesh->material(), 0, 0, std::nullopt);
89+
}
9090
}
9191
}
9292

‎src/threepp/renderers/gl/GLRenderLists.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ namespace threepp::gl {
6767

6868
explicit GLRenderLists(GLProperties& properties);
6969

70-
GLRenderList* get(Scene* scene, size_t renderCallDepth);
70+
GLRenderList* get(Object3D* scene, size_t renderCallDepth);
7171

7272
void dispose();
7373

‎src/threepp/renderers/gl/GLUniforms.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,14 @@ namespace {
151151

152152
void setValueV1f(const UniformValue& value) {
153153

154-
float f = std::get<float>(value);
154+
float f;
155+
if (std::holds_alternative<bool>(value)) {
156+
f = std::get<bool>(value);
157+
} else if (std::holds_alternative<float>(value)) {
158+
f = std::get<float>(value);
159+
} else {
160+
throw std::runtime_error("Illegal variant index: " + std::to_string(value.index()));
161+
}
155162

156163
ensureCapacity(cache, 1);
157164
if (cache[0] == f) return;

0 commit comments

Comments
 (0)
Please sign in to comment.