VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
sky.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright 2025-2026 Arnis Lektauers
3
//
4
// Created by Arnis Lektauers on 09.10.2025.
5
//
6
#pragma once
7
8
#include <memory>
9
10
#include "
core/math/vector3.h
"
11
#include "
scene/constants.h
"
12
#include "
scene/graphNode.h
"
13
#include "
skyMesh.h
"
14
15
namespace
visutwin::canvas
16
{
17
class
GraphicsDevice
;
18
class
Scene
;
19
class
Texture
;
20
25
class
Sky
26
{
27
public
:
28
Sky
(
const
std::shared_ptr<GraphicsDevice>& device,
Scene
* scene);
29
~Sky
();
30
31
void
updateSkyMesh
();
32
void
resetSkyMesh
();
33
SkyMesh
*
skyMesh
();
34
35
void
setType
(
int
value);
36
int
type
()
const
{
return
_type; }
37
38
void
setDepthWrite
(
bool
value);
39
bool
depthWrite
()
const
{
return
_depthWrite; }
40
46
void
setCenter
(
const
Vector3
& value) { _center = value; }
47
const
Vector3
&
center
()
const
{
return
_center; }
48
53
Vector3
centerWorldPos
()
const
;
54
55
GraphNode
*
node
() {
return
&_node; }
56
59
Texture
*
atmosphereDummyTexture
()
const
{
return
_atmosphereDummyTexture.get(); }
60
61
private
:
62
std::shared_ptr<GraphicsDevice> _device;
63
Scene
* _scene =
nullptr
;
64
int
_type =
SKYTYPE_INFINITE
;
65
bool
_depthWrite =
false
;
66
Vector3
_center =
Vector3
(0.0f, 1.0f, 0.0f);
67
GraphNode
_node =
GraphNode
(
"SkyMeshNode"
);
68
std::unique_ptr<SkyMesh> _skyMesh;
69
std::shared_ptr<Texture> _atmosphereDummyTexture;
// 1×1 placeholder for atmosphere-only sky
70
};
71
}
visutwin::canvas::GraphNode
Hierarchical scene graph node with local/world transforms and parent-child relationships.
Definition
graphNode.h:28
visutwin::canvas::GraphicsDevice
Abstract GPU interface for resource creation, state management, and draw submission.
Definition
graphicsDevice.h:239
visutwin::canvas::Scene
Container for the scene graph, lighting environment, fog, skybox, and layer composition.
Definition
scene.h:29
visutwin::canvas::Sky::~Sky
~Sky()
Definition
sky.cpp:20
visutwin::canvas::Sky::depthWrite
bool depthWrite() const
Definition
sky.h:39
visutwin::canvas::Sky::centerWorldPos
Vector3 centerWorldPos() const
Definition
sky.cpp:125
visutwin::canvas::Sky::type
int type() const
Definition
sky.h:36
visutwin::canvas::Sky::center
const Vector3 & center() const
Definition
sky.h:47
visutwin::canvas::Sky::updateSkyMesh
void updateSkyMesh()
Definition
sky.cpp:37
visutwin::canvas::Sky::skyMesh
SkyMesh * skyMesh()
Definition
sky.cpp:117
visutwin::canvas::Sky::setType
void setType(int value)
Definition
sky.cpp:24
visutwin::canvas::Sky::setCenter
void setCenter(const Vector3 &value)
Definition
sky.h:46
visutwin::canvas::Sky::setDepthWrite
void setDepthWrite(bool value)
Definition
sky.cpp:32
visutwin::canvas::Sky::Sky
Sky(const std::shared_ptr< GraphicsDevice > &device, Scene *scene)
Definition
sky.cpp:16
visutwin::canvas::Sky::resetSkyMesh
void resetSkyMesh()
Definition
sky.cpp:112
visutwin::canvas::Sky::atmosphereDummyTexture
Texture * atmosphereDummyTexture() const
Definition
sky.h:59
visutwin::canvas::Sky::node
GraphNode * node()
Definition
sky.h:55
visutwin::canvas::SkyMesh
Definition
skyMesh.h:27
visutwin::canvas::Texture
GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management.
Definition
texture.h:57
graphNode.h
visutwin::canvas
Definition
eventHandler.cpp:9
visutwin::canvas::SKYTYPE_INFINITE
@ SKYTYPE_INFINITE
Definition
constants.h:42
constants.h
skyMesh.h
visutwin::canvas::Vector3
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition
vector3.h:29
vector3.h
scene
skybox
sky.h
Generated by
1.16.1