8#include <unordered_set>
89 std::shared_ptr<CompiledGeom>
geom;
108 std::shared_ptr<CompiledGeom_TransformInstance>
geom;
117 std::shared_ptr<CompiledGeom_TransformInstance> geom, std::shared_ptr<Material>
mat
187 std::shared_ptr<CompiledGeom>
geom =
nullptr;
188 std::shared_ptr<TextureCubemap>
cubemap =
nullptr;
195 std::vector<std::shared_ptr<MeshInstance>>
meshes;
196 std::vector<std::shared_ptr<MeshInstance_TransformInstanced>>
instances;
#define DEBUG_LABEL_ARG_MANY
first debug label argument of many
constexpr m4 m4_identity
The identity matrix.
void render_geom_instanced(const MeshInstance_TransformInstanced &instanced)
void render_geom(const CompiledGeom &geom)
std::shared_ptr< CompiledGeom > compile_geom(DEBUG_LABEL_ARG_MANY const core::Geom &, const core::CompiledGeomVertexAttributes &layout)
std::shared_ptr< MeshInstance > make_mesh_instance(std::shared_ptr< CompiledGeom > geom, std::shared_ptr< Material > mat)
std::shared_ptr< CompiledGeom_TransformInstance > compile_geom_with_transform_instance(DEBUG_LABEL_ARG_MANY const core::Geom &, const core::CompiledGeomVertexAttributes &layout, std::size_t max_instances)
Billboarding
Defines the billboarding algorithm to use.
m4 transform_from_rotation(const v3 &position, const Ypr &ypr)
CameraVectors create_vectors(const Camera &camera)
Capture the current local space of the camera.
m4 transform_from_billboard(const v3 &position, Billboarding billboarding, const CompiledCamera &cc)
An angle in both degrees and radians.
A (inclusive) range between two values.
Represents color in gamma (non-linear) space (aka sRGB).
A list of CompiledVertexLayoutNoNameList (for geom)
Contains the parameters for an S-Curve.
static constexpr SCurve light_curve()
A temporary view of the local space of a camera.
A "compiled" camera for use in rendering.
Represents a Geom on the GPU.
void operator=(CompiledGeom &&)=delete
CompiledGeom(const CompiledGeom &)=delete
CompiledGeom(CompiledGeom &&)=delete
void operator=(const CompiledGeom &)=delete
CompiledGeom(u32, u32, u32, const core::CompiledGeomVertexAttributes &, i32)
std::unordered_set< core::VertexType > debug_types
Like a spotlight but can be positioned with a transform, supports light cookies and can use a "view f...
core::SCurve curve
curve and ui, needs to be trimmed down for actual renderer
std::shared_ptr< Texture2d > cookie
std::vector< PointLight > point_lights
std::vector< DirectionalLight > directional_lights
std::vector< FrustumLight > frustum_lights
Stores Geom + Material (aka a mesh) and its current transform.
std::shared_ptr< CompiledGeom > geom
Billboarding billboarding
if not none, rotation is ignored
LocalAxis get_local_axis() const
std::optional< Rgb > outline
std::shared_ptr< Material > material
core::SCurve curve
curve and ui, needs to be trimmed down for actual renderer
A skybox model with a cubemap texture.
std::shared_ptr< CompiledGeom > geom
std::shared_ptr< TextureCubemap > cubemap
A list of objects to render.
std::optional< Skybox > skybox
std::vector< std::shared_ptr< MeshInstance > > meshes
std::vector< std::shared_ptr< MeshInstance_TransformInstanced > > instances