From 6d6c5aa72670c38de95726190a51ccf9bd935485 Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Tue, 5 Sep 2023 10:36:46 -0700 Subject: [PATCH 1/2] Update changelog for recent work --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b65fdb32d4..bf3fdcd50a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Added support for the [lin_displayp3 and srgb_displayp3](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1368) colorspaces in shader generation. - Added support for the [blackbody PBR node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1367) in shader generation. - Added support for [displacement](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1396) in MDL generation. +- Added an up-axis control to the [triplanar projection node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1489). - Added version details to [shared libraries](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1447) on Windows. - Added a [MacOS 13](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1375) build to GitHub Actions. @@ -30,6 +31,7 @@ - Fixed [volume mixing](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1395) in MDL generation. - Fixed a bug to improve [shader generation determinism](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1376). - Fixed a bug to improve the [consistency of auto layout](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1389) in the MaterialX Graph Editor. +- Fixed a bug to enable [multi-output connection edits](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1506) in the MaterialX Graph Editor. ## [1.38.7] - 2023-04-21 From f822dc9826162b783c30e4e0ba95341d1a2f1326 Mon Sep 17 00:00:00 2001 From: Ashwin Bhat <1727158+ashwinbhat@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:12:28 -0700 Subject: [PATCH 2/2] Add method to update uniforms in ShaderRenderer (#1510) ShaderRenderer::updateUniform allows user to update a uniform value. --- source/MaterialXRender/ShaderRenderer.cpp | 5 +++++ source/MaterialXRender/ShaderRenderer.h | 3 +++ source/MaterialXRenderGlsl/GlslRenderer.cpp | 10 ++++++++++ source/MaterialXRenderGlsl/GlslRenderer.h | 3 +++ source/MaterialXRenderMsl/MslRenderer.h | 3 +++ source/MaterialXRenderMsl/MslRenderer.mm | 5 +++++ .../PyMaterialX/PyMaterialXRender/PyShaderRenderer.cpp | 1 + 7 files changed, 30 insertions(+) diff --git a/source/MaterialXRender/ShaderRenderer.cpp b/source/MaterialXRender/ShaderRenderer.cpp index b621e5cd88..3bba62795e 100644 --- a/source/MaterialXRender/ShaderRenderer.cpp +++ b/source/MaterialXRender/ShaderRenderer.cpp @@ -59,4 +59,9 @@ void ShaderRenderer::setSize(unsigned int, unsigned int) { } +void ShaderRenderer::updateUniform(const string&, ConstValuePtr) +{ + throw ExceptionRenderError("Update uniform is not yet supported"); +} + MATERIALX_NAMESPACE_END diff --git a/source/MaterialXRender/ShaderRenderer.h b/source/MaterialXRender/ShaderRenderer.h index b049f81126..c1cfbecfa0 100644 --- a/source/MaterialXRender/ShaderRenderer.h +++ b/source/MaterialXRender/ShaderRenderer.h @@ -110,6 +110,9 @@ class MX_RENDER_API ShaderRenderer /// Validate inputs for the program. virtual void validateInputs() { } + /// Update the program with value of the uniform. + virtual void updateUniform(const string& name, ConstValuePtr value); + /// Set the size of the rendered image. virtual void setSize(unsigned int width, unsigned int height); diff --git a/source/MaterialXRenderGlsl/GlslRenderer.cpp b/source/MaterialXRenderGlsl/GlslRenderer.cpp index bf2c8cd849..374305f32f 100644 --- a/source/MaterialXRenderGlsl/GlslRenderer.cpp +++ b/source/MaterialXRenderGlsl/GlslRenderer.cpp @@ -119,6 +119,16 @@ void GlslRenderer::validateInputs() _program->getAttributesList(); } +void GlslRenderer::updateUniform(const string& name, ConstValuePtr value) +{ + if (!_program->bind()) + { + return; + } + + _program->bindUniform(name, value); +} + void GlslRenderer::setSize(unsigned int width, unsigned int height) { if (_context->makeCurrent()) diff --git a/source/MaterialXRenderGlsl/GlslRenderer.h b/source/MaterialXRenderGlsl/GlslRenderer.h index 8538fe2208..9ea121aec9 100644 --- a/source/MaterialXRenderGlsl/GlslRenderer.h +++ b/source/MaterialXRenderGlsl/GlslRenderer.h @@ -79,6 +79,9 @@ class MX_RENDERGLSL_API GlslRenderer : public ShaderRenderer /// Validate inputs for the program void validateInputs() override; + /// Update the program with value of the uniform. + void updateUniform(const string& name, ConstValuePtr value) override; + /// Set the size of the rendered image void setSize(unsigned int width, unsigned int height) override; diff --git a/source/MaterialXRenderMsl/MslRenderer.h b/source/MaterialXRenderMsl/MslRenderer.h index 1c54bdbc6a..ca87d9dd3e 100644 --- a/source/MaterialXRenderMsl/MslRenderer.h +++ b/source/MaterialXRenderMsl/MslRenderer.h @@ -82,6 +82,9 @@ class MX_RENDERMSL_API MslRenderer : public ShaderRenderer /// Validate inputs for the program void validateInputs() override; + /// Update the program with value of the uniform. + void updateUniform(const string& name, ConstValuePtr value) override; + /// Set the size of the rendered image void setSize(unsigned int width, unsigned int height) override; diff --git a/source/MaterialXRenderMsl/MslRenderer.mm b/source/MaterialXRenderMsl/MslRenderer.mm index 072f6f1a3a..f5e794c2b3 100644 --- a/source/MaterialXRenderMsl/MslRenderer.mm +++ b/source/MaterialXRenderMsl/MslRenderer.mm @@ -124,6 +124,11 @@ _program->getAttributesList(); } +void MslRenderer::updateUniform(const string& name, ConstValuePtr value) +{ + _program->bindUniform(name, value); +} + void MslRenderer::createFrameBuffer(bool encodeSrgb) { _framebuffer = MetalFramebuffer::create(_device, diff --git a/source/PyMaterialX/PyMaterialXRender/PyShaderRenderer.cpp b/source/PyMaterialX/PyMaterialXRender/PyShaderRenderer.cpp index c67238dea5..94c0d49cee 100644 --- a/source/PyMaterialX/PyMaterialXRender/PyShaderRenderer.cpp +++ b/source/PyMaterialX/PyMaterialXRender/PyShaderRenderer.cpp @@ -25,6 +25,7 @@ void bindPyShaderRenderer(py::module& mod) .def("createProgram", static_cast(&mx::ShaderRenderer::createProgram)) .def("createProgram", static_cast(&mx::ShaderRenderer::createProgram)) .def("validateInputs", &mx::ShaderRenderer::validateInputs) + .def("updateUniform", &mx::ShaderRenderer::updateUniform) .def("setSize", &mx::ShaderRenderer::setSize) .def("render", &mx::ShaderRenderer::render);