https://github.com/Synthoid/substance-for-unity-extensions
All notable changes to the Substance3D For Unity Extensions package will be documented here.
The format is based on Keep a Changelog
- Support for importing graphs with their names?
- Classes for setting values on
SubstanceNativeGraph
andSubstanceRuntimeGraph
objects. SubstanceGraphRuntimeExtensions
RenderFast()
andRenderFastAsync()
methods to support rendering graphs without checking that textures need to be resized.
SubstanceNativeGraphExtensions.SetInputTextureGPUAsync()
now accepts an optional cancellation token.
SubstanceEngineManager
class for conveniently initializing and shutting down the substance engine.
- Updated
SubstanceReflectionEditorUtility.InitializeInstance()
to match the new structure of its reflection target method.
- Path generation for
SubstanceExtensionsRuntimeUtility
'sGetPluginPath()
andGetEnginePath()
methods when running in builds.
- Example scene showcasing how to work with
SceneSubstanceGraphData
andISubstanceProvider
classes.
- Updated Substance API calls to match plugin version
3.8.0
's code.
- Custom asset post processor to automatically update
SubstanceGraphSO
assets when an.sbsar
file is updated. SceneSubstanceGraphData
for conveniently obtaining references toSubstanceGraphSO
assets with materials in open scenes.- Preferences and project settings windows for substance extensions functionality.
IndentAttribute
for convenient field indenting in inspectors.GetInputs()
andGetOutputs()
extension methods forSubstanceNativeGraph
.SetInputValues()
extension method forSubstanceGraphSO
.SubstanceReflectionEditorUtility
class for accessing internal functionality of the substance plugin.SubstanceExtensionsEditorGUI
andSubstanceExtensionsEditorGUILayout
editor utility classes to handle drawing editor UI.SubstanceOutputTextureExtensions
class.- Several methods to
SubstanceExtensionsEditorUtility
to support asset update functionality.
- Moved several editor inspector drawing methods from
SubstanceExtensionsEditorUtility
to newSubstanceExtensionsEditorGUI
andSubstanceExtensionsEditorGUILayout
classes.
- Timeline support for setting substance native graph values and rendering substances.
- Example scene showcasing Timeline functionality.
- README file to project folder.
ISubstanceInputParameter
andISubstanceInputParameterValue
interfaces.- Optional callback to
SetInputTextureGPUAsync()
extension method. NoFoldoutAttribute
for drawing classes without the usual foldout control.
- Extension methods previously using
SubstanceParameter
andSubstanceParameterValue
arguments now useISubstanceInputParameter
andISubstanceInputParameterValue
arguments. SubstanceNativeGraphExtensions.SetInputTextureGPUAsync()
can now accept anyTexture
value, not justTexture2D
values.SubstanceNativeGraphExtensions.SetInputTextureGPU()
methods now log a warning when attempting to pass a compressed texture. This will be addressed in a later update.SubstanceInputTypeFilterAttribute
can now be applied toSubstanceParameterValue
fields to limit selectable inputs by value type.
- Oversight in
SubstanceNativeGraphExtensions
'SetInputValues<T>()
andSetInputValuesAsync<T>()
extension methods that threw casting errors. SubstanceOutput
'sEditorAsset
property now properly references the targetSubstanceGraphSO
asset instead of attempting to load aSubstanceFileSO
asset.
SubstanceParameter
andSubstanceParameterValue
Type
properties are now deprecated. UseValueType
instead.SubstanceGraphSO
SetInputs()
extension method. Should useSetValues()
extension methods instead.
SubstanceGraphRuntimeExtensions.UpdateOutputTextureSizes()
method to handle resizing output textures when $outputsize has been changed.- Advanced runtime example now uses a custom control prefab for output size inputs.
- Texture control for advanced runtime example.
- Set $outputsize example scene showcasing several ways to set a substance's output size input.
SubstanceGraphRuntimeExtension
s'Render()
andRenderAsync()
methods now account for $outputsize changes and properly resize output textures as needed.SubstanceParameterValue
SetValue(SubstanceNativeGraph)
andSetValueAsync(SubstanceNativeGraph)
methods no longer return bool values.- Moved texture input SetTexture and GetTexture extension methods to SubstanceInputExtensions.
- Advanced runtime example multi-input controls now properly populate values.
- Extension methods for
SubstanceGraphSO
andSubstanceNativeGraph
to streamline runtime rendering. - Extension methods for
SubstanceNativeGraph
to set Texture input values synchronously with CPU textures (read/write enabled) and asynchronously with GPU textures. - Convenience extension methods for working with
Vector4Int
values in native graph and input classes. TransformMatrixAttribute
for drawing Vector4 fields in a similar manner to SubstanceDesigner's matrix attribute fields.FloatExtensions
andVectorExtensions
classes.Vector4Int
constructor that accepts an array of ints.RuntimeGraphOnlyAttribute
to show a warning when referencing SubstanceGraphSO assets that are not marked as runtime only.- Example scenes showcasing extension code functionality.
- Unit tests for interacting with substance assets and runtime graphs.
- Updated supported plugin version to
3.4.0
release. - Renamed root "Substance Extensions" folder to "Substance 3D Extensions"
SubstanceParameter
andSubstanceOutput
now targetSubstanceGraphSO
instead ofSubstanceFileSO
assets.SubstanceParameter
andSubstanceOutput
popup search windows now display the name of the graph being interacted with.SubstanceParameter
andSubstanceParameterValue
now display input types and identifiers as part of their labels.SubstanceOutput
now displays output identifier and channel information as part of its labels.- Moved existing test substances to Tests folder.
- None options in controls are now stylized as "" to separate them from possible actual values called "None".
- Renamed
SubstanceGraphExtensions.GetOutputMap()
toGetOutputTexture()
.
SubstanceParameterValue
inspector for Int3 values now uses XYZ labels instead of XYW.- Inspector indenting no longer breaks
SubstanceParameter
orSubstanceOutput
inspector visuals.
- SubstanceFileExtensions.cs as its functionality should be instead accessed through SubstanceGraphExtensions.cs now.
- SubstanceParameter, SubstanceParameterValue, and SubstanceOutput structs now have an EditorAsset property for convenient access to targeted SubstanceFileSO asset in the editor.
- SubstanceExtensionsRuntimeUtility for containing runtime utility and convenience methods.
- SubstanceParameter and SubstanceOutput now use a popup search window when selecting values.
- SubstanceOutput now displays graph instance names instead of index values for its labels' root section (ie "graph_01/Test" vs "01/Test").
- Moved engine and plugin name, guid, and path retrieval methods from SubstanceExtensionsEditorUtility to new SubstanceExtensionsRuntimeUtilty class.
- Index out of range exception when changing targeted Substance asset on SubstanceParameterValue fields to an asset with less graphs or inputs than the previous value.
- Null reference exception when SubstanceParameter field is viewed after its target substance is destroyed.
- Null reference exception when SubstanceParameterValue field is viewed after its target substance is destroyed.
- Null reference exception when SusbtanceOutput field is viewed after its target substance is destroyed.
- Support for Substance3D for Unity v
0.0.100
. For0.0.90
and older, use [0.0.9].
- SubstanceParameter selection now use graph names for input path labels instead of generic index numbers.
- SubstanceParameter selection now properly indexes for inputs with shared names across graph instances.
- Renamed some extension classes to better match their corresponding classes in v0.0.100 of the plugin.
- Tooltip error in OutputSizeLabel.
- Initial package commit.