Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
MatteOpaque.h
Go to the documentation of this file.
1#pragma once
2
4#include "Actor/Image/Image.h"
5#include "Math/math_fwd.h"
6#include "SDL/sdl_interface.h"
7
8#include <memory>
9
10namespace ph
11{
12
14{
15public:
16 void genSurface(const CookingContext& ctx, SurfaceBehavior& behavior) const override;
17
21 void setAlbedo(const math::Vector3R& albedo);
22
25 void setAlbedo(const real r, const real g, const real b);
26
27 void setAlbedo(std::shared_ptr<Image> albedo);
28
29private:
33 static std::shared_ptr<Image> makeConstantAlbedo(const math::Vector3R& albedo);
34
35 std::shared_ptr<Image> m_albedo;
36 std::shared_ptr<Image> m_sigmaDegrees;
37
38public:
40 {
41 ClassType clazz("matte-opaque");
42 clazz.docName("Matte Opaque Material");
43 clazz.description("A material model for surfaces with matte look, such as chalk and moon.");
44 clazz.baseOn<SurfaceMaterial>();
45
46 TSdlReference<Image, OwnerType> albedo("albedo", &OwnerType::m_albedo);
47 albedo.description("An image or constant color that will be used for describing albedo.");
48 clazz.addField(albedo);
49
50 TSdlReference<Image, OwnerType> sigmaDegrees("sigma-degrees", &OwnerType::m_sigmaDegrees);
51 sigmaDegrees.description("Roughness in standard deviation of surface orientation (unit: degrees).");
52 sigmaDegrees.optional();
53 clazz.addField(sigmaDegrees);
54
55 return clazz;
56 }
57};
58
59}// end namespace ph
Information about the world being cooked.
Definition CookingContext.h:24
Definition MatteOpaque.h:14
PH_DEFINE_SDL_CLASS(TSdlOwnerClass< MatteOpaque >)
Definition MatteOpaque.h:39
void genSurface(const CookingContext &ctx, SurfaceBehavior &behavior) const override
Definition MatteOpaque.cpp:17
void setAlbedo(const math::Vector3R &albedo)
Definition MatteOpaque.cpp:47
Definition SurfaceBehavior.h:15
Definition SurfaceMaterial.h:15
SDL binding type for a canonical SDL resource class.
Definition TSdlOwnerClass.h:23
A value that points to a SDL resource.
Definition TSdlReference.h:21
TSdlReference & optional()
Definition TSdlReference.ipp:214
TSdlReference & description(std::string descriptionStr)
Definition TSdlReference.ipp:206
The root for all renderer implementations.
Definition EEngineProject.h:6