Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
surface_optics_fwd.h
Go to the documentation of this file.
1#pragma once
2
3#include "Math/math.h"
4#include "Utility/TBitFlags.h"
5
6#include <Common/primitive_type.h>
7
8#include <type_traits>
9
10namespace ph
11{
12
26
28
30using SurfaceElemental = int;
31
32static_assert(std::is_signed_v<SurfaceElemental>,
33 "Type of `SurfaceElemental` must be signed, as special meanings are "
34 "defined with negative values.");
35
39 static_cast<ESurfacePhenomenon>(~uint32(0));
40
45
50
55
59
60class SurfaceOptics;
61
62}// end namespace ph
#define PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS(EnumType)
Defines operator | and operator & for EnumType.
Definition TBitFlags.h:146
Describes how light interacts with a surface.
Definition SurfaceOptics.h:17
Manipulate a value type where each bit is a binary flag.
Definition TBitFlags.h:17
Miscellaneous math utilities.
consteval UIntType flag_bit()
Definition math.h:537
The root for all renderer implementations.
Definition EEngineProject.h:6
constexpr ESurfacePhenomenon DELTA_SURFACE_PHENOMENA
Definition surface_optics_fwd.h:48
ESurfacePhenomenon
Available surface phenomena.
Definition surface_optics_fwd.h:16
int SurfaceElemental
Definition surface_optics_fwd.h:30
constexpr ESurfacePhenomenon GLOSSY_SURFACE_PHENOMENA
Definition surface_optics_fwd.h:53
constexpr ESurfacePhenomenon DIFFUSE_SURFACE_PHENOMENA
Definition surface_optics_fwd.h:43
constexpr ESurfacePhenomenon ALL_SURFACE_PHENOMENA
Definition surface_optics_fwd.h:38
constexpr SurfaceElemental ALL_SURFACE_ELEMENTALS
Definition surface_optics_fwd.h:58