RavEngine
Loading...
Searching...
No Matches
BuiltinMaterials.hpp
1#pragma once
2#if !RVE_SERVER
3#include "Material.hpp"
4#include "Common3D.hpp"
5#include <variant>
6#include <string_view>
7
8namespace RavEngine {
9
11 ColorRGBA color{ 1,1,1,1 };
12 float metallicTint = 0;
13 float roughnessTint = 0.4;
14 float specularTint = 0.5;
15 };
16
17 struct PBRMaterial : public LitMaterial {
19 protected:
20 PBRMaterial(MaterialRenderOptions options, const std::string_view vsh_name, const std::string_view fsh_name);
21 };
22
23 struct PBRMaterialBaked : public PBRMaterial {
25 };
26
27 // the default layout and blend information.
28 // you probably want these when defining custom materials.
29 extern const decltype(MaterialConfig::vertConfig) defaultVertexConfig;
30 extern const decltype(MaterialConfig::colorBlendConfig) defaultColorBlendConfig, defaultTransparentColorBlendConfig, defaultColorBlendConfigLitPrepass, defaultColorBlendConfigUnlitPrepass;
31 extern const decltype(MaterialConfig::colorBlendConfig) defaultUnlitColorBlendConfig, defaultTransparentUnlitColorBlendConfig;
32
40 public:
41
42 PBRMaterialInstance(Ref<PBRMaterial> m, uint32_t priority = 0);
43
44 void SetAlbedoTexture(Ref<Texture> texture) {
45 textureBindings[1] = texture;
46 }
47 void SetNormalTexture(Ref<Texture> texture) {
48 textureBindings[2] = texture;
49 }
50 void SetSpecularTexture(Ref<Texture> texture) {
51 textureBindings[3] = texture;
52 }
53 void SetMetallicTexture(Ref<Texture> texture) {
54 textureBindings[4] = texture;
55 }
56 void SetRoughnessTexture(Ref<Texture> texture) {
57 textureBindings[5] = texture;
58 }
59 void SetAOTexture(Ref<Texture> texture) {
60 textureBindings[6] = texture;
61 }
62 void SetEmissiveTexture(Ref<Texture> texture) {
63 textureBindings[7] = texture;
64 }
65 void SetAlbedoColor(const ColorRGBA& c){
66 pushConstantData.color = c;
67 }
68 void SetMetallicTint(float c) {
69 pushConstantData.metallicTint = c;
70 }
71 void SetSpecularTint(float c) {
72 pushConstantData.specularTint = c;
73 }
74 void SetRoughnessTint(float c) {
75 pushConstantData.roughnessTint = c;
76 }
77
78 virtual const RGL::untyped_span GetPushConstantData() const override {
79 return pushConstantData;
80 }
81 private:
82 PBRPushConstantData pushConstantData;
83 };
84
86 public:
87 PBRMaterialBakedInstance(Ref<PBRMaterialBaked> m, uint32_t priority = 0) : PBRMaterialInstance(m, priority) {}
88
89 void SetBakedShadowTexture(Ref<Texture> texture) {
90 textureBindings[8] = texture;
91 }
92 };
93}
94
95#endif
Definition Span.hpp:11
Definition BuiltinMaterials.hpp:85
Definition BuiltinMaterials.hpp:39
virtual const RGL::untyped_span GetPushConstantData() const override
Definition BuiltinMaterials.hpp:78
Definition concurrentqueue.h:747
Definition Animation.hpp:6
Definition Common3D.hpp:55
Definition Material.hpp:136
Definition Material.hpp:184
Definition Material.hpp:118
Definition BuiltinMaterials.hpp:23
Definition BuiltinMaterials.hpp:17
Definition BuiltinMaterials.hpp:10