fixed material properties

This commit is contained in:
Mikulas Florek 2019-06-24 21:17:23 +02:00
parent 850ede4b98
commit 245750d56e
5 changed files with 24 additions and 16 deletions

View file

@ -254,7 +254,7 @@ function main()
clear(CLEAR_DEPTH, 0, 0, 0, 1, 0)
renderGizmos()
render2D()
--renderIcons()
renderIcons()
renderDebugShapes()
renderSelectionOutline(res)
end

View file

@ -110,8 +110,8 @@ fragment_shader [[
if(data.albedo.a < 0.5) discard;
#endif
data.wpos = v_wpos.xyz;
data.roughness = texture(u_roughnessmap, v_uv).r;
data.metallic = texture(u_metallicmap, v_uv).r;
data.roughness = texture(u_roughnessmap, v_uv).r * u_material_params.x;
data.metallic = texture(u_metallicmap, v_uv).r * u_material_params.y;
data.normal = normalize(v_normal);
data.emission = packEmission(u_material_params.z);
}

View file

@ -829,7 +829,6 @@ void PropertyGrid::onGUI()
i->update();
}
if (!m_is_open) return;
auto& ents = m_editor.getSelectedEntities();

View file

@ -475,7 +475,21 @@ void Material::onBeforeReady()
}
m_texture_count = minimum(m_texture_count, m_shader->m_texture_slot_count);
updateRenderData(true);
}
void Material::updateRenderData(bool on_before_ready)
{
if (!m_shader) return;
if (!on_before_ready && !isReady()) return;
if(m_render_data) {
m_renderer.runInRenderThread(m_render_data, [](Renderer& renderer, void* ptr){
LUMIX_DELETE(renderer.getAllocator(), (RenderData*)ptr);
});
}
m_render_data = LUMIX_NEW(m_renderer.getAllocator(), RenderData);
m_render_data->color = m_color;
m_render_data->emission = m_emission;
@ -531,12 +545,6 @@ bool Material::isTextureDefine(u8 define_idx) const
}
void Material::setAlphaRef(float value)
{
m_alpha_ref = value;
}
void Material::enableBackfaceCulling(bool enable)
{
if (enable) {

View file

@ -62,15 +62,15 @@ public:
RenderData* getRenderData() const { return m_render_data; }
float getMetallic() const { return m_metallic; }
void setMetallic(float value) { m_metallic = value; }
void setMetallic(float value) { m_metallic = value; updateRenderData(false); }
float getRoughness() const { return m_roughness; }
void setRoughness(float value) { m_roughness = value; }
void setRoughness(float value) { m_roughness = value; updateRenderData(false); }
float getEmission() const { return m_emission; }
void setEmission(float value) { m_emission = value; }
void setEmission(float value) { m_emission = value; updateRenderData(false); }
Vec4 getColor() const { return m_color; }
void setColor(const Vec4& color) { m_color = color; }
void setColor(const Vec4& color) { m_color = color; updateRenderData(false); }
float getAlphaRef() const { return m_alpha_ref; }
void setAlphaRef(float value);
void setAlphaRef(float value) { m_alpha_ref = value; updateRenderData(false); }
u64 getRenderStates() const { return m_render_states; }
void enableBackfaceCulling(bool enable);
bool isBackfaceCulling() const;
@ -110,6 +110,7 @@ private:
static int LUA_layer(lua_State* L);
void onBeforeReady() override;
void updateRenderData(bool on_before_ready);
void unload() override;
bool load(u64 size, const u8* mem) override;