diff --git a/Assets/vfx-graph-gs/SplatData.cs b/Assets/vfx-graph-gs/SplatData.cs index ef211cd..8f65b26 100644 --- a/Assets/vfx-graph-gs/SplatData.cs +++ b/Assets/vfx-graph-gs/SplatData.cs @@ -74,7 +74,7 @@ namespace SplatVfx // _cachedBuffers.scale.SetData(ScaleArray); // _cachedBuffers.rotation.SetData(RotationArray); // _cachedBuffers.color.SetData(ColorArray); - // _cachedBuffers.opacity.SetData(OpacityArray); + _cachedBuffers.opacity.SetData(OpacityArray); // _cachedBuffers.sh.SetData(SHArray); } return _cachedBuffers; diff --git a/Assets/vfx-graph-gs/SplatDataBinder.cs b/Assets/vfx-graph-gs/SplatDataBinder.cs index 0cae77d..88935ed 100644 --- a/Assets/vfx-graph-gs/SplatDataBinder.cs +++ b/Assets/vfx-graph-gs/SplatDataBinder.cs @@ -30,6 +30,10 @@ namespace SplatVfx // { get => (string)_colorBufferProperty; // set => _colorBufferProperty = value; } + public string OpacityBufferProperty + { get => (string)_opacityBufferProperty; + set => _opacityBufferProperty = value; } + // [VFXPropertyBinding("System.UInt32"), SerializeField] // ExposedProperty _splatCountProperty = "SplatCount"; @@ -42,6 +46,9 @@ namespace SplatVfx // [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField] // ExposedProperty _colorBufferProperty = "ColorBuffer"; + [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField] + ExposedProperty _opacityBufferProperty = "OpacityBuffer"; + public override bool IsValid(VisualEffect component) => SplatData != null && // component.HasUInt(_splatCountProperty) && @@ -55,6 +62,7 @@ namespace SplatVfx component.SetGraphicsBuffer(_positionBufferProperty, SplatData.PositionBuffer); // component.SetGraphicsBuffer(_axisBufferProperty, SplatData.AxisBuffer); // component.SetGraphicsBuffer(_colorBufferProperty, SplatData.ColorBuffer); + component.SetGraphicsBuffer(_opacityBufferProperty, SplatData.OpacityBuffer); } // public override string ToString() diff --git a/Assets/vfx-graph-gs/SplatImporter.cs b/Assets/vfx-graph-gs/SplatImporter.cs index f7b2097..edbb0c2 100644 --- a/Assets/vfx-graph-gs/SplatImporter.cs +++ b/Assets/vfx-graph-gs/SplatImporter.cs @@ -28,6 +28,7 @@ using Unity.Collections; 5. Use a struct for header_info 6. Write handler for data other than 32 bit float 7. Pass around Span instead of byte[] for memory safety + 8. Implement opacity clamping in the VFX Graph *******************************************************************************/ namespace SplatVfx.Editor @@ -178,6 +179,11 @@ namespace SplatVfx.Editor case "z": splatData.PositionArray[i].z = val; + break; + + case "opacity": + splatData.OpacityArray[i] = 255 / (1 + math.exp(-val)); + break; } } diff --git a/Assets/vfx-graph-gs/SplatVFX.vfx b/Assets/vfx-graph-gs/SplatVFX.vfx index ebf18ef..b4b5ca7 100644 --- a/Assets/vfx-graph-gs/SplatVFX.vfx +++ b/Assets/vfx-graph-gs/SplatVFX.vfx @@ -68,10 +68,10 @@ MonoBehaviour: categories: [] uiBounds: serializedVersion: 2 - x: 283 + x: 282 y: -492 - width: 871 - height: 1065 + width: 872 + height: 1139 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -93,6 +93,9 @@ MonoBehaviour: - {fileID: 8926484042661614653} - {fileID: 8926484042661614635} - {fileID: 8926484042661614617} + - {fileID: 8926484042661614706} + - {fileID: 8926484042661614711} + - {fileID: 8926484042661614719} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -114,6 +117,21 @@ MonoBehaviour: max: Infinity enumValues: [] descendantCount: 0 + - name: OpacityBuffer + path: + tooltip: + space: -1 + spaceable: 0 + sheetType: + realType: GraphicsBuffer + defaultValue: + m_Type: + m_SerializableType: + m_SerializableObject: + min: -Infinity + max: Infinity + enumValues: [] + descendantCount: 0 m_ImportDependencies: [] m_GraphVersion: 19 m_ResourceVersion: 1 @@ -645,6 +663,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614670} + - {fileID: 8926484042661614708} m_UIPosition: {x: 705, y: 200} m_UICollapsed: 0 m_UISuperCollapsed: 0 @@ -1578,3 +1597,372 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] +--- !u!114 &8926484042661614706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 330e0fca1717dde4aaa144f48232aa64, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXParameter + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661614707} + m_ExposedName: OpacityBuffer + m_Exposed: 1 + m_Order: 1 + m_Category: + m_Min: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Max: + m_Type: + m_SerializableType: + m_SerializableObject: + m_IsOutput: 0 + m_EnumValues: [] + m_ValueFilter: 0 + m_Tooltip: + m_Nodes: + - m_Id: 0 + linkedSlots: + - outputSlot: {fileID: 8926484042661614707} + inputSlot: {fileID: 8926484042661614712} + position: {x: 310, y: 519} + expandedSlots: [] + expanded: 1 + supecollapsed: 1 +--- !u!114 &8926484042661614707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5ff4abdfc4ddb54992e15a0636f5d0e, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotGraphicsBuffer + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614707} + m_MasterData: + m_Owner: {fileID: 8926484042661614706} + m_Value: + m_Type: + m_SerializableType: UnityEngine.GraphicsBuffer, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: o + m_serializedType: + m_SerializableType: UnityEngine.GraphicsBuffer, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614712} +--- !u!114 &8926484042661614708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Block.SetAttribute + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614617} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614709} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614710} + attribute: alpha + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614709} + m_MasterData: + m_Owner: {fileID: 8926484042661614708} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: -1 + m_Property: + name: _Alpha + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614722} +--- !u!114 &8926484042661614710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotBool + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614710} + m_MasterData: + m_Owner: {fileID: 8926484042661614708} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2edef10e6f1ffed47bad3472a10739a6, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.SampleBuffer + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 498, y: 562} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 + m_InputSlots: + - {fileID: 8926484042661614712} + - {fileID: 8926484042661614713} + m_OutputSlots: + - {fileID: 8926484042661614722} + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + mode: 0 +--- !u!114 &8926484042661614712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5ff4abdfc4ddb54992e15a0636f5d0e, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotGraphicsBuffer + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614712} + m_MasterData: + m_Owner: {fileID: 8926484042661614711} + m_Value: + m_Type: + m_SerializableType: UnityEngine.GraphicsBuffer, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: buffer + m_serializedType: + m_SerializableType: UnityEngine.GraphicsBuffer, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614707} +--- !u!114 &8926484042661614713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotUint + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614713} + m_MasterData: + m_Owner: {fileID: 8926484042661614711} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: index + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614721} +--- !u!114 &8926484042661614719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXAttributeParameter + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 282, y: 562} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661614721} + attribute: spawnIndex + location: 0 + mask: xyz +--- !u!114 &8926484042661614721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotUint + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 8926484042661614719} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: Spawn Index + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614713} +--- !u!114 &8926484042661614722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614722} + m_MasterData: + m_Owner: {fileID: 8926484042661614711} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: s + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614709}