Skip to content

Commit 35a7362

Browse files
authored
Reworking material properties (#434)
Updated material properties to use std::variant
1 parent 00ac482 commit 35a7362

23 files changed

+430
-321
lines changed

Sources/Overload/OvCore/src/OvCore/Rendering/PostProcess/AutoExposureEffect.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void OvCore::Rendering::PostProcess::AutoExposureEffect::Draw(
5555

5656
// Luminance calculation
5757
m_luminanceBuffer.Resize(kLuminanceBufferResolution, kLuminanceBufferResolution);
58-
m_luminanceMaterial.Set("_CenterWeightBias", autoExposureSettings.centerWeightBias, true);
58+
m_luminanceMaterial.SetProperty("_CenterWeightBias", autoExposureSettings.centerWeightBias, true);
5959
m_renderer.Blit(p_pso, p_src, m_luminanceBuffer, m_luminanceMaterial,
6060
OvRendering::Settings::EBlitFlags::DEFAULT & ~OvRendering::Settings::EBlitFlags::RESIZE_DST_TO_MATCH_SRC);
6161
const auto luminanceTex = m_luminanceBuffer.GetAttachment<OvRendering::HAL::Texture>(OvRendering::Settings::EFramebufferAttachment::COLOR);
@@ -76,18 +76,18 @@ void OvCore::Rendering::PostProcess::AutoExposureEffect::Draw(
7676
m_exposurePingPongIndex = (m_exposurePingPongIndex + 1) % 2;
7777

7878
// Exposure adaptation
79-
m_exposureMaterial.Set("_LuminanceTexture", luminanceTex, true);
80-
m_exposureMaterial.Set("_MinLuminanceEV", autoExposureSettings.minLuminanceEV, true);
81-
m_exposureMaterial.Set("_MaxLuminanceEV", autoExposureSettings.maxLuminanceEV, true);
82-
m_exposureMaterial.Set("_ExposureCompensationEV", autoExposureSettings.exposureCompensationEV, true);
83-
m_exposureMaterial.Set("_ElapsedTime", elapsedTime, true);
84-
m_exposureMaterial.Set("_Progressive", static_cast<int>(autoExposureSettings.progressive), true);
85-
m_exposureMaterial.Set("_SpeedUp", autoExposureSettings.speedUp, true);
86-
m_exposureMaterial.Set("_SpeedDown", autoExposureSettings.speedDown, true);
79+
m_exposureMaterial.SetProperty("_LuminanceTexture", &luminanceTex.value(), true);
80+
m_exposureMaterial.SetProperty("_MinLuminanceEV", autoExposureSettings.minLuminanceEV, true);
81+
m_exposureMaterial.SetProperty("_MaxLuminanceEV", autoExposureSettings.maxLuminanceEV, true);
82+
m_exposureMaterial.SetProperty("_ExposureCompensationEV", autoExposureSettings.exposureCompensationEV, true);
83+
m_exposureMaterial.SetProperty("_ElapsedTime", elapsedTime, true);
84+
m_exposureMaterial.SetProperty("_Progressive", static_cast<int>(autoExposureSettings.progressive), true);
85+
m_exposureMaterial.SetProperty("_SpeedUp", autoExposureSettings.speedUp, true);
86+
m_exposureMaterial.SetProperty("_SpeedDown", autoExposureSettings.speedDown, true);
8787
m_renderer.Blit(p_pso, previousExposure, currentExposure, m_exposureMaterial);
8888

8989
// Apply the exposure to the final image
9090
const auto exposureTex = currentExposure.GetAttachment<OvRendering::HAL::Texture>(OvRendering::Settings::EFramebufferAttachment::COLOR);
91-
m_compensationMaterial.Set("_ExposureTexture", exposureTex, true);
91+
m_compensationMaterial.SetProperty("_ExposureTexture", &exposureTex.value(), true);
9292
m_renderer.Blit(p_pso, p_src, p_dst, m_compensationMaterial);
9393
}

Sources/Overload/OvCore/src/OvCore/Rendering/PostProcess/BloomEffect.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void OvCore::Rendering::PostProcess::BloomEffect::Draw(
4949
const auto& bloomSettings = static_cast<const BloomSettings&>(p_settings);
5050

5151
// Step 1: Extract bright spots from the source
52-
m_brightnessMaterial.Set("_Threshold", bloomSettings.threshold, true);
52+
m_brightnessMaterial.SetProperty("_Threshold", bloomSettings.threshold, true);
5353
m_renderer.Blit(p_pso, p_src, m_bloomPingPong[0], m_brightnessMaterial);
5454

5555
// Step 2: Apply gaussian blur on bright spots (horizontal and vertical)
@@ -60,17 +60,17 @@ void OvCore::Rendering::PostProcess::BloomEffect::Draw(
6060
auto& currentSrc = horizontal ? m_bloomPingPong[0] : m_bloomPingPong[1];
6161
auto& currentDst = horizontal ? m_bloomPingPong[1] : m_bloomPingPong[0];
6262

63-
m_blurMaterial.Set("_Horizontal", horizontal ? true : false, true);
64-
m_blurMaterial.Set("_BlurSize", bloomSettings.radius, true);
65-
m_blurMaterial.Set("_KernelSize", bloomSettings.kernelSize, true);
63+
m_blurMaterial.SetProperty("_Horizontal", horizontal ? true : false, true);
64+
m_blurMaterial.SetProperty("_BlurSize", bloomSettings.radius, true);
65+
m_blurMaterial.SetProperty("_KernelSize", bloomSettings.kernelSize, true);
6666
m_renderer.Blit(p_pso, currentSrc, currentDst, m_blurMaterial);
6767

6868
horizontal = !horizontal;
6969
}
7070

7171
// Step 3: Combine bloom with original framebuffer
7272
const auto bloomTex = m_bloomPingPong[0].GetAttachment<OvRendering::HAL::Texture>(OvRendering::Settings::EFramebufferAttachment::COLOR);
73-
m_bloomMaterial.Set("_BloomTexture", bloomTex, true);
74-
m_bloomMaterial.Set("_BloomIntensity", bloomSettings.intensity, true);
73+
m_bloomMaterial.SetProperty("_BloomTexture", &bloomTex.value(), true);
74+
m_bloomMaterial.SetProperty("_BloomIntensity", bloomSettings.intensity, true);
7575
m_renderer.Blit(p_pso, p_src, p_dst, m_bloomMaterial);
7676
}

Sources/Overload/OvCore/src/OvCore/Rendering/PostProcess/TonemappingEffect.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ void OvCore::Rendering::PostProcess::TonemappingEffect::Draw(
2323
const auto& tonemappingSettings = static_cast<const TonemappingSettings&>(p_settings);
2424

2525
// Tonemapping
26-
m_tonemappingMaterial.Set("_Exposure", tonemappingSettings.exposure, true);
27-
m_tonemappingMaterial.Set("_Mode", static_cast<int>(tonemappingSettings.mode), true);
28-
m_tonemappingMaterial.Set("_GammaCorrection", static_cast<int>(tonemappingSettings.gammaCorrection), true);
26+
m_tonemappingMaterial.SetProperty("_Exposure", tonemappingSettings.exposure, true);
27+
m_tonemappingMaterial.SetProperty("_Mode", static_cast<int>(tonemappingSettings.mode), true);
28+
m_tonemappingMaterial.SetProperty("_GammaCorrection", static_cast<int>(tonemappingSettings.gammaCorrection), true);
2929
m_renderer.Blit(p_pso, p_src, p_dst, m_tonemappingMaterial);
3030
}

Sources/Overload/OvCore/src/OvCore/Rendering/ShadowRenderFeature.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
* @licence: MIT
55
*/
66

7+
78
#include <OvCore/ECS/Components/CMaterialRenderer.h>
89
#include <OvCore/Rendering/ShadowRenderFeature.h>
10+
11+
#include <OvDebug/Logger.h>
12+
913
#include <OvRendering/Features/LightingRenderFeature.h>
1014

1115
constexpr uint8_t kMaxShadowMaps = 1;
@@ -38,8 +42,8 @@ void OvCore::Rendering::ShadowRenderFeature::OnBeforeDraw(OvRendering::Data::Pip
3842
if (light.type == OvRendering::Settings::ELightType::DIRECTIONAL)
3943
{
4044
const auto shadowTex = light.GetShadowBuffer().GetAttachment<OvRendering::HAL::Texture>(OvRendering::Settings::EFramebufferAttachment::DEPTH);
41-
material.Set("_ShadowMap", shadowTex, true); // Single use material property
42-
material.Set("_LightSpaceMatrix", light.GetLightSpaceMatrix());
45+
material.SetProperty("_ShadowMap", &shadowTex.value(), true); // Single use material property
46+
material.SetProperty("_LightSpaceMatrix", light.GetLightSpaceMatrix());
4347
++lightIndex;
4448
}
4549
}

Sources/Overload/OvCore/src/OvCore/Rendering/ShadowRenderPass.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void OvCore::Rendering::ShadowRenderPass::Draw(OvRendering::Data::PipelineState
6161
light.UpdateShadowData(frameDescriptor.camera.value());
6262
const auto& lightSpaceMatrix = light.GetLightSpaceMatrix();
6363
const auto& shadowBuffer = light.GetShadowBuffer();
64-
m_shadowMaterial.Set("_LightSpaceMatrix", lightSpaceMatrix);
64+
m_shadowMaterial.SetProperty("_LightSpaceMatrix", lightSpaceMatrix);
6565
shadowBuffer.Bind();
6666
m_renderer.SetViewport(0, 0, light.shadowMapResolution, light.shadowMapResolution);
6767
m_renderer.Clear(true, true, true);
@@ -111,7 +111,7 @@ void OvCore::Rendering::ShadowRenderPass::DrawOpaques(
111111
drawable.material = m_shadowMaterial;
112112
drawable.stateMask = m_shadowMaterial.GenerateStateMask();
113113

114-
drawable.material.value().Set("_ModelMatrix", modelMatrix);
114+
drawable.material.value().SetProperty("_ModelMatrix", modelMatrix);
115115

116116
m_renderer.DrawEntity(p_pso, drawable);
117117
}

Sources/Overload/OvCore/src/OvCore/Resources/Loaders/MaterialLoader.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
* @licence: MIT
55
*/
66

7-
#include "OvCore/Resources/Loaders/MaterialLoader.h"
7+
#include <OvCore/Resources/Loaders/MaterialLoader.h>
8+
9+
#include <OvDebug/Logger.h>
810

911
OvCore::Resources::Material * OvCore::Resources::Loaders::MaterialLoader::Create(const std::string & p_path)
1012
{

Sources/Overload/OvCore/src/OvCore/Resources/Material.cpp

+75-72
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
* @licence: MIT
55
*/
66

7-
#include "OvCore/Resources/Material.h"
7+
#include <OvCore/Resources/Material.h>
88

9-
void OvCore::Resources::Material::OnSerialize(tinyxml2::XMLDocument & p_doc, tinyxml2::XMLNode * p_node)
9+
void OvCore::Resources::Material::OnSerialize(tinyxml2::XMLDocument& p_doc, tinyxml2::XMLNode* p_node)
1010
{
1111
using namespace OvCore::Helpers;
1212
using namespace OvRendering::Settings;
13-
using namespace OvRendering::Resources;
1413
using namespace OvMaths;
1514

1615
Serializer::SerializeShader(p_doc, p_node, "shader", m_shader);
@@ -33,54 +32,80 @@ void OvCore::Resources::Material::OnSerialize(tinyxml2::XMLDocument & p_doc, tin
3332
tinyxml2::XMLNode* uniformsNode = p_doc.NewElement("uniforms");
3433
p_node->InsertEndChild(uniformsNode);
3534

36-
for (const auto&[name, prop] : m_properties)
35+
for (const auto& [name, prop] : m_properties)
3736
{
3837
auto& value = prop.value;
39-
4038
tinyxml2::XMLNode* uniform = p_doc.NewElement("uniform");
41-
uniformsNode->InsertEndChild(uniform); // Instead of p_node, use uniformNode (To create)
39+
uniformsNode->InsertEndChild(uniform);
4240

4341
const auto uniformInfo = m_shader->GetProgram().GetUniformInfo(name);
44-
4542
Serializer::SerializeString(p_doc, uniform, "name", name);
4643

47-
if (uniformInfo && value.has_value())
44+
if (uniformInfo && !std::holds_alternative<std::monostate>(value))
4845
{
49-
switch (uniformInfo->type)
50-
{
51-
case EUniformType::BOOL:
52-
if (value.type() == typeid(bool)) Serializer::SerializeInt(p_doc, uniform, "value", std::any_cast<bool>(value));
53-
break;
54-
55-
case EUniformType::INT:
56-
if (value.type() == typeid(int)) Serializer::SerializeInt(p_doc, uniform, "value", std::any_cast<int>(value));
57-
break;
58-
59-
case EUniformType::FLOAT:
60-
if (value.type() == typeid(float)) Serializer::SerializeFloat(p_doc, uniform, "value", std::any_cast<float>(value));
61-
break;
62-
63-
case EUniformType::FLOAT_VEC2:
64-
if (value.type() == typeid(FVector2)) Serializer::SerializeVec2(p_doc, uniform, "value", std::any_cast<FVector2>(value));
65-
break;
46+
auto visitor = [&](auto&& arg) {
47+
using T = std::decay_t<decltype(arg)>;
48+
using enum EUniformType;
49+
const auto type = uniformInfo->type;
6650

67-
case EUniformType::FLOAT_VEC3:
68-
if (value.type() == typeid(FVector3)) Serializer::SerializeVec3(p_doc, uniform, "value", std::any_cast<FVector3>(value));
69-
break;
70-
71-
case EUniformType::FLOAT_VEC4:
72-
if (value.type() == typeid(FVector4)) Serializer::SerializeVec4(p_doc, uniform, "value", std::any_cast<FVector4>(value));
73-
break;
51+
if constexpr (std::same_as<T, bool>)
52+
{
53+
if (type == BOOL)
54+
{
55+
Serializer::SerializeInt(p_doc, uniform, "value", arg);
56+
}
57+
}
58+
else if constexpr (std::same_as<T, int>)
59+
{
60+
if (type == INT)
61+
{
62+
Serializer::SerializeInt(p_doc, uniform, "value", arg);
63+
}
64+
}
65+
else if constexpr (std::same_as<T, float>)
66+
{
67+
if (type == FLOAT)
68+
{
69+
Serializer::SerializeFloat(p_doc, uniform, "value", arg);
70+
}
71+
}
72+
else if constexpr (std::same_as<T, FVector2>)
73+
{
74+
if (type == FLOAT_VEC2)
75+
{
76+
Serializer::SerializeVec2(p_doc, uniform, "value", arg);
77+
}
78+
}
79+
else if constexpr (std::same_as<T, FVector3>)
80+
{
81+
if (type == FLOAT_VEC3)
82+
{
83+
Serializer::SerializeVec3(p_doc, uniform, "value", arg);
84+
}
85+
}
86+
else if constexpr (std::same_as<T, FVector4>)
87+
{
88+
if (type == FLOAT_VEC4)
89+
{
90+
Serializer::SerializeVec4(p_doc, uniform, "value", arg);
91+
}
92+
}
93+
else if constexpr (std::same_as<T, OvRendering::Resources::Texture*>)
94+
{
95+
if (type == SAMPLER_2D)
96+
{
97+
Serializer::SerializeTexture(p_doc, uniform, "value", arg);
98+
}
99+
}
100+
// No need to handle TextureHandle* here as it's not serializable (only texture assets are)
101+
};
74102

75-
case EUniformType::SAMPLER_2D:
76-
if (value.type() == typeid(Texture*)) Serializer::SerializeTexture(p_doc, uniform, "value", std::any_cast<Texture*>(value));
77-
break;
78-
}
103+
std::visit(visitor, value);
79104
}
80105
}
81106
}
82107

83-
void OvCore::Resources::Material::OnDeserialize(tinyxml2::XMLDocument & p_doc, tinyxml2::XMLNode * p_node)
108+
void OvCore::Resources::Material::OnDeserialize(tinyxml2::XMLDocument& p_doc, tinyxml2::XMLNode* p_node)
84109
{
85110
using namespace OvCore::Helpers;
86111

@@ -101,13 +126,13 @@ void OvCore::Resources::Material::OnDeserialize(tinyxml2::XMLDocument & p_doc, t
101126
}
102127

103128
/* We get the shader with Deserialize method */
104-
OvRendering::Resources::Shader* deserializedShader = OvCore::Helpers::Serializer::DeserializeShader(p_doc, p_node, "shader");
129+
const auto shader = Serializer::DeserializeShader(p_doc, p_node, "shader");
105130

106131
/* We verify that the shader is valid (Not null) */
107-
if (deserializedShader)
132+
if (shader)
108133
{
109134
/* If the shader is valid, we set it to the material (Modify m_shader pointer + Query + FillUniforms) */
110-
SetShader(deserializedShader);
135+
SetShader(shader);
111136

112137
tinyxml2::XMLNode* uniformsNode = p_node->FirstChildElement("uniforms"); // Access to "Uniforms" (Every uniform will be attached to "Uniforms")
113138

@@ -130,41 +155,19 @@ void OvCore::Resources::Material::OnDeserialize(tinyxml2::XMLDocument & p_doc, t
130155
/* Deserialization of the uniform value depending on the uniform type (Deserialization result to std::any) */
131156
switch (uniformInfo->type)
132157
{
133-
case OvRendering::Settings::EUniformType::BOOL:
134-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeBoolean(p_doc, uniform, "value");
135-
break;
136-
137-
case OvRendering::Settings::EUniformType::INT:
138-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeInt(p_doc, uniform, "value");
139-
break;
140-
141-
case OvRendering::Settings::EUniformType::FLOAT:
142-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeFloat(p_doc, uniform, "value");
143-
break;
144-
145-
case OvRendering::Settings::EUniformType::FLOAT_VEC2:
146-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeVec2(p_doc, uniform, "value");
147-
break;
148-
149-
case OvRendering::Settings::EUniformType::FLOAT_VEC3:
150-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeVec3(p_doc, uniform, "value");
151-
break;
152-
153-
case OvRendering::Settings::EUniformType::FLOAT_VEC4:
154-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeVec4(p_doc, uniform, "value");
155-
break;
156-
157-
case OvRendering::Settings::EUniformType::FLOAT_MAT4:
158-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeMat4(p_doc, uniform, "value");
159-
break;
160-
161-
case OvRendering::Settings::EUniformType::SAMPLER_2D:
162-
m_properties[uniformInfo->name] = OvCore::Helpers::Serializer::DeserializeTexture(p_doc, uniform, "value");
163-
break;
158+
using enum OvRendering::Settings::EUniformType;
159+
case BOOL: SetProperty(uniformInfo->name, Serializer::DeserializeBoolean(p_doc, uniform, "value")); break;
160+
case INT: SetProperty(uniformInfo->name, Serializer::DeserializeInt(p_doc, uniform, "value")); break;
161+
case FLOAT: SetProperty(uniformInfo->name, Serializer::DeserializeFloat(p_doc, uniform, "value")); break;
162+
case FLOAT_VEC2: SetProperty(uniformInfo->name, Serializer::DeserializeVec2(p_doc, uniform, "value")); break;
163+
case FLOAT_VEC3: SetProperty(uniformInfo->name, Serializer::DeserializeVec3(p_doc, uniform, "value")); break;
164+
case FLOAT_VEC4: SetProperty(uniformInfo->name, Serializer::DeserializeVec4(p_doc, uniform, "value")); break;
165+
case FLOAT_MAT4: SetProperty(uniformInfo->name, Serializer::DeserializeMat4(p_doc, uniform, "value")); break;
166+
case SAMPLER_2D: SetProperty(uniformInfo->name, Serializer::DeserializeTexture(p_doc, uniform, "value")); break;
164167
}
165168
}
166169
}
167170
}
168171
}
169172
}
170-
}
173+
}

Sources/Overload/OvEditor/src/OvEditor/Core/EditorActions.cpp

+14-4
Original file line numberDiff line numberDiff line change
@@ -853,12 +853,22 @@ void OvEditor::Core::EditorActions::PropagateFileRename(std::string p_previousNa
853853
{
854854
if (auto texture = OvCore::Global::ServiceLocator::Get<OvCore::ResourceManagement::TextureManager>().GetResource(p_previousName, false))
855855
{
856-
for (auto[name, instance] : OvCore::Global::ServiceLocator::Get<OvCore::ResourceManagement::MaterialManager>().GetResources())
856+
for (auto [name, instance] : OvCore::Global::ServiceLocator::Get<OvCore::ResourceManagement::MaterialManager>().GetResources())
857+
{
857858
if (instance)
858-
for (auto&[name, prop] : instance->GetProperties())
859-
if (prop.value.has_value() && prop.value.type() == typeid(OvRendering::Resources::Texture*))
860-
if (std::any_cast<OvRendering::Resources::Texture*>(prop.value) == texture)
859+
{
860+
for (auto& [name, prop] : instance->GetProperties())
861+
{
862+
if (const auto pval = std::get_if<OvRendering::Resources::Texture*>(&prop.value); pval && *pval)
863+
{
864+
if (*pval == texture)
865+
{
861866
prop.value = static_cast<OvRendering::Resources::Texture*>(nullptr);
867+
}
868+
}
869+
}
870+
}
871+
}
862872

863873
auto& assetView = EDITOR_PANEL(Panels::AssetView, "Asset View");
864874
auto assetViewRes = assetView.GetResource();

Sources/Overload/OvEditor/src/OvEditor/Panels/AssetView.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@ OvEditor::Panels::AssetView::AssetView
5151

5252
/* Default Material */
5353
m_defaultMaterial.SetShader(EDITOR_CONTEXT(shaderManager)[":Shaders\\Standard.ovfx"]);
54-
m_defaultMaterial.Set("u_Diffuse", OvMaths::FVector4(1.f, 1.f, 1.f, 1.f));
55-
m_defaultMaterial.Set("u_Shininess", 100.0f);
56-
m_defaultMaterial.Set<OvRendering::Resources::Texture*>("u_DiffuseMap", nullptr);
54+
m_defaultMaterial.SetProperty("u_Diffuse", OvMaths::FVector4(1.f, 1.f, 1.f, 1.f));
55+
m_defaultMaterial.SetProperty("u_Shininess", 100.0f);
56+
m_defaultMaterial.SetProperty("u_DiffuseMap", static_cast<OvRendering::Resources::Texture*>(nullptr));
5757

5858
/* Texture Material */
5959
m_textureMaterial.SetShader(EDITOR_CONTEXT(shaderManager)[":Shaders\\Unlit.ovfx"]);
60-
m_textureMaterial.Set("u_Diffuse", OvMaths::FVector4(1.f, 1.f, 1.f, 1.f));
60+
m_textureMaterial.SetProperty("u_Diffuse", OvMaths::FVector4(1.f, 1.f, 1.f, 1.f));
6161
m_textureMaterial.SetBackfaceCulling(false);
6262
m_textureMaterial.SetBlendable(true);
63-
m_textureMaterial.Set<OvRendering::Resources::Texture*>("u_DiffuseMap", nullptr);
63+
m_textureMaterial.SetProperty("u_DiffuseMap", static_cast<OvRendering::Resources::Texture*>(nullptr));
6464

6565
m_image->AddPlugin<OvUI::Plugins::DDTarget<std::pair<std::string, OvUI::Widgets::Layout::Group*>>>("File").DataReceivedEvent += [this](auto p_data)
6666
{
@@ -118,7 +118,7 @@ void OvEditor::Panels::AssetView::SetTexture(OvRendering::Resources::Texture& p_
118118
m_assetActor->transform.SetLocalRotation(OvMaths::FQuaternion({ -90.0f, 0.0f, 0.0f }));
119119
m_assetActor->transform.SetLocalScale(OvMaths::FVector3::One * 3.0f);
120120
m_modelRenderer->SetModel(EDITOR_CONTEXT(editorResources)->GetModel("Plane"));
121-
m_textureMaterial.Set<OvRendering::Resources::Texture*>("u_DiffuseMap", &p_texture);
121+
m_textureMaterial.SetProperty("u_DiffuseMap", &p_texture);
122122
m_materialRenderer->FillWithMaterial(m_textureMaterial);
123123

124124
m_cameraController.MoveToTarget(*m_assetActor);

0 commit comments

Comments
 (0)