Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions Changes.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
1.7.x.x (relative to 1.7.0.0)
=======

Features
--------

- USDMeshLight :
- Added node to add necessary attributes to geometry to convert to a USDMeshLight.
- Added Arnold, RenderMan, 3Delight and Cycles rendering.

Improvements
------------

- SetFilter, Scene Editors : Set expressions containing operators are now editable via drag and drop of set names.
- MeshLight : Added viewport visualisation of textures.

Fixes
-----
Expand Down Expand Up @@ -69,6 +77,174 @@ Improvements
- Defaulted to writing RenderMan attributes in a format compatible with `hdPrman`, for rendering in `usdview` and other Hydra-based applications.
- Defaulted to writing OSL shaders in a format compatible with `hdPrman`, for rendering in `usdview` and other Hydra-based applications.
- Outputs : Added output presets for RenderMan's NPR AOVs.
<<<<<<< HEAD
=======
- SceneWriter : Defaulted to writing OSL shaders in a format compatible with `hdPrman`, for rendering in `usdview` and other Hydra-based applications.

Fixes
-----

- Arnold :
- Fixed fallback to a facing ratio shader when a shader is removed during an interactive render.
- Fixed crash attempting to render with a shader that doesn't exist.
- Viewer : Fixed regression introduced in 1.6.16.0 that prevented visualisation of the renderer-specific camera visibility and matte attributes authored by the Render Pass Editor's render adaptors [^1].
- RenderMan :
- Fixed `R10043` warning when using PxrDisplace [^1].
- Fixed automatic creation of required AOVs for PxrStylized filters in XPU [^1].
- Catalogue : Fixed errors caused by undoing an image deletion or snapshot.
- Gaffer module : Fixed bug preventing `environment()` from returning environment variables modified after startup on macOS.

API
---

- DictPath : Added support for subclassing, without the need to override `copy()` or `_children()`.
- PlugCreationGadget : Added counterpart to PlugCreationWidget, allowing plugs to be created easily in the GraphEditor.
- PlugVisibilityGadget : Added gadget for managing plug visibility in the GraphEditor.

Breaking Changes
----------------

- ShaderUI : Removed PlugAdder. Use `GafferUI.PlugVisibilityGadget` instead.
- SceneWriter : Changed writing of OSL shaders to USD. Set `IECOREUSD_WRITE_CONFORMANT_OSL_SHADERS=0` to revert to the default behaviour from Gaffer 1.6.
- Catalogue : Removed support for image order metadata from versions prior to 1.4.0.0. In the unlikely event this is needed, reorder and resave from Gaffer 1.6.

Build
-----

- Fixed errors building `gaffer` executable on macOS [^2].

[^1]: Included in `1.6.x.x`, so should be omitted from final `1.7.0.0` release notes.
[^2]: Fix for bug introduced in `1.7.0.0a1`, so should be omitted from final `1.7.0.0` release notes.

1.7.0.0a5 (relative to 1.7.0.0a4)
=========

Fixes
-----

- NodeEditor : Fixed redundant updates when editing private plugs, such as when repositioning the currently viewed node in the Graph Editor.
- RenderPassEditor : Fixed errors displaying presets while editing the `type` column [^1].
- RenderMan : Fixed potential hang when updating the Visible Set immediately after starting an interactive render with `useVisibleSet` enabled [^1].
- NodeGadgetBinding : Fixed linking errors when using NodeGadgetClass. Clients should link to the new `GafferUIBindings` shared library [^1].

API
---

- ShadingEngine : Added `TextureOrigin` enum, to allow emulation of renderers whose texture origin is at the top left rather than bottom left.

Breaking Changes
----------------

- RenderPassTypeAdaptorUI : Removed `renderPassTypePresetNames()` and `renderPassTypePresetValues()`.
- OpenImageIO : Removed source compatibility for versions prior to 3.
- OpenShadingLanguage : Removed source compatibility for versions prior to 1.14.

[^1]: Fix for bug introduced in `1.7.0.0a1`, so should be omitted from final `1.7.0.0` release notes.

1.7.0.0a4 (relative to 1.7.0.0a3)
=========

Improvements
------------

- SceneWriter : Added `IECOREUSD_WRITE_CONFORMANT_OSL_SHADERS` environment variable. When set to a value of `1`, OSL shaders are written to USD in a format compatible with `hdPrman`, for rendering with RenderMan in `usdview` and other Hydra-based applications. [^1]

Fixes
-----

- ShadingEngine : Fixed handling of shaders when an `.oso` file does exist, but `Shader::getType()` does not match `osl:*`. Examples include Pxr shaders loaded from USD files. [^1]

Build
-----

- Cortex : Updated to version 10.7.0.0a12.

[^1]: Included in `1.6.x.x`, so should be omitted from final `1.7.0.0` release notes.

1.7.0.0a3 (relative to 1.7.0.0a2)
=========

Features
--------

- FlamencoDispatcher : Added a new node for sending tasks to Blender's [Flamenco](https://flamenco.blender.org) render farm manager.
- PrimitiveQuery : Added a new node for querying a primitive's type and variable sizes.
- FileList : Added node for listing matching files.
- DeleteFiles : Added node for deleting files.
- CopyFiles : Added node for copying files.
- RenameFiles : Added node for renaming files.

Improvements
------------

- MeshLight : Added viewport visualisation of textures.

Fixes
-----

- SceneInspector : Fixed Interpolation field for primitive variables that don't exist. Previously it said "Invalid", and now it shows nothing.
- Renderer API : Added missing `Renderer.inl` header file.
- NodeGadget : Fixed usage of `instanceCreatedSignal()` with NodeGadgets implemented in Python [^1].

API
---

- Image : Added `updateImage()` method.

Build
-----

- Cortex : Updated to version 10.7.0.0a11.

Breaking Changes
----------------

- SceneReader : Removed `./` prefix from relative prototype paths loaded from USD files.
- Instancer : Defaulted `GAFFERSCENE_INSTANCER_EXPLICIT_ABSOLUTE_PATHS` to `1`, as required by SceneReader's updated handling of relative USD prototypes. The environment variable may be removed in future.

[^1]: Fix for bug introduced in `1.7.0.0a1`, so should be omitted from final `1.7.0.0` release notes.

1.7.0.0a2 (relative to 1.7.0.0a1)
=========

Features
--------

- DeleteGrids : Added node for deleting grids from locations containing OpenVDB volumes.

Fixes
-----

- RenderMan :
- Fixed PxrDisplace shader assignments, which now target the `ri:displacement` attribute rather than `osl:displacement`. This renders as before in Gaffer, but is more compatible with other applications when exported to USD.
- Fixed handling of multiple intervals in `ri:checkpoint:interval` option. Intervals may be separated by spaces or commas. [^1]
- Dispatcher : [^1]
- Fixed `Context has no variable named...` error when dispatching an isolated task with a `StringPlug` script variable containing a frame substitution.
- Fixed unnecessary baking of values for ScriptNode variables plugs without input connections.

[^1]: Included in `1.6.x.x`, so should be omitted from final `1.7.0.0` release notes.

Breaking Changes
----------------

- RenderMan : PxrDisplace now assigns as an `ri:displacement` attribute rather than `osl:displacement`.

1.7.0.0a1 (relative to 1.6.19.1)
=========

Features
--------

- Cycles : Updated to version 5.1.0.
- CurvesPrimitive : Added `Pinned` wrap mode in addition to the existing `Periodic` and `NonPeriodic` modes. This conveniently interpolates CatmullRom
and BSpline curves to their endpoints automatically, without manual management of duplicate endpoints or "phantom vertices".
- CurvesInterpolation : Added node for modifying CurvesPrimitive `basis` and `wrap`. This includes the ability to convert curves with `Pinned` wrap to `NonPeriodic`, adding the appropriate "phantom" points to maintain curve shape.
- CurvesTangents : Added node for computing tangents on CurvesPrimitives (#6166).

Improvements
------------

>>>>>>> dfed117d5 (Arnold : Add support for USD mesh lights)
- AttributeTweaks, AttributeVisualiser, ShaderAssignment, ShaderTweaks, ShuffleAttributes : Added `global` plug, to allow global attributes to be processed instead of using `filter` to process per-location attributes.
- ShaderTweaks :
- Added tweaking of integrators, background shaders, atmosphere shaders and render pass shaders.
Expand Down
3 changes: 3 additions & 0 deletions include/GafferCycles/IECoreCyclesPreview/ShaderNetworkAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ IECORECYCLES_API IECoreScene::ShaderNetworkPtr convertLightShader( const IECoreS
/// calling `convertLight()` and `convertLightShader()`.
IECORECYCLES_API void convertUSDShaders( IECoreScene::ShaderNetwork *shaderNetwork );

/// Returns a modified set of attributes conforming to the USDMeshLight specification.
IECORECYCLES_API IECore::ConstCompoundObjectPtr convertUSDMeshLightAttributes( const IECore::CompoundObject *attributes );

} // namespace ShaderNetworkAlgo

} // namespace IECoreCycles
2 changes: 2 additions & 0 deletions include/GafferSceneUI/Private/LightVisualiserAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,6 @@ GAFFERSCENEUI_API void addWireframeCurveState( IECoreGL::Group *group, const flo
/// made into a function that can be called by implementation shaders.
GAFFERSCENEUI_API void addConstantShader( IECoreGL::Group *group, const Imath::Color3f &tint, int aimType = -1 );

GAFFERSCENEUI_API void addTexturedConstantShader( IECoreGL::State *state, IECore::ConstDataPtr textureData, const Imath::Color3f &tint, const float saturation, const Imath::Color3f &gamma, int maxTextureResolution );

} // namespace GafferSceneUI::Private::LightVisualiserAlgo
1 change: 1 addition & 0 deletions include/GafferUSD/TypeIds.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ enum TypeId
USDAttributesTypeId = 119101,
USDShaderTypeId = 119102,
USDLightTypeId = 119103,
USDMeshLightTypeId = 119104,

LastTypeId = 119199

Expand Down
61 changes: 61 additions & 0 deletions include/GafferUSD/USDMeshLight.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
//////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2026, Cinesite VFX Ltd. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above
// copyright notice, this list of conditions and the following
// disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided with
// the distribution.
//
// * Neither the name of John Haddon nor the names of
// any other contributors to this software may be used to endorse or
// promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//////////////////////////////////////////////////////////////////////////

#pragma once

#include "GafferUSD/Export.h"
#include "GafferUSD/TypeIds.h"

#include "GafferScene/MeshLight.h"

namespace GafferUSD
{

class GAFFERUSD_API USDMeshLight : public GafferScene::MeshLight
{

public :

explicit USDMeshLight( const std::string &name=defaultName<USDMeshLight>() );
~USDMeshLight() override;

GAFFER_NODE_DECLARE_TYPE( GafferUSD::USDMeshLight, USDMeshLightTypeId, GafferScene::MeshLight );

};

IE_CORE_DECLAREPTR( USDMeshLight )

} // namespace GafferUSD
3 changes: 3 additions & 0 deletions include/IECoreArnold/ShaderNetworkAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@ IECOREARNOLD_API void hashSubstitutions( const IECoreScene::ShaderNetwork *shade
/// \deprecated Use `IECoreScene::ShaderNetworkAlgo::applyRenderAdaptors()` instead.
IECOREARNOLD_API void applySubstitutions( IECoreScene::ShaderNetwork *shaderNetwork, IECore::InternedString attributeName, const IECore::CompoundObject *attributes );

/// Returns a modified set of attributes conforming to the USDMeshLight specification.
IECOREARNOLD_API IECore::ConstCompoundObjectPtr convertUSDMeshLightAttributes( const IECore::CompoundObject *attributes );

} // namespace ShaderNetworkAlgo

} // namespace IECoreArnold
3 changes: 3 additions & 0 deletions include/IECoreDelight/ShaderNetworkAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ void updateLightGeometry( const IECoreScene::ShaderNetwork *shaderNetwork, NSICo
/// tests.
IECOREDELIGHT_API void convertUSDShaders( IECoreScene::ShaderNetwork *shaderNetwork );

/// Returns a modified set of attributes conforming to the USDMeshLight specification.
IECOREDELIGHT_API IECore::ConstCompoundObjectPtr convertUSDMeshLightAttributes( const IECore::CompoundObject *attributes );

} // namespace ShaderNetworkAlgo

} // namespace IECoreDelight
3 changes: 3 additions & 0 deletions include/IECoreRenderMan/ShaderNetworkAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,7 @@ IECORERENDERMAN_API VStructAction evaluateVStructConditional( const std::string
/// as `convert()` resolves vstructs internally anyway.
IECORERENDERMAN_API void resolveVStructs( IECoreScene::ShaderNetwork *shaderNetwork );

/// Returns a modified set of attributes conforming to the USDMeshLight specification.
IECORERENDERMAN_API IECore::ConstCompoundObjectPtr convertUSDMeshLightAttributes( const IECore::CompoundObject *attributes );

} // namespace IECoreRenderMan::ShaderNetworkAlgo
2 changes: 1 addition & 1 deletion python/GafferArnoldTest/ArnoldShaderTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ def testMeshLight( self ) :
self.assertEqual( n["type"].getValue(), "ai:light" )

self.assertTrue( "exposure" in n["parameters"] )
self.assertTrue( n["out"].typeId(), Gaffer.Plug.staticTypeId() )
self.assertEqual( n["out"].typeId(), Gaffer.Plug.staticTypeId() )

def testColorParameterMetadata( self ) :

Expand Down
Loading
Loading