add DFVolume feature

master
uc-hoba 8 years ago
parent 49e826e567
commit 1e2b9b765b
  1. 559
      Unity_2018_Frozen/Assets/Frozen/Frozen.unity
  2. 2
      Unity_2018_Frozen/Assets/Frozen/ParticleUniforms.asset
  3. 16
      Unity_2018_Frozen/Assets/Frozen/Script/SnowflakeParticleUpdater.cs
  4. 26
      Unity_2018_Frozen/Assets/Frozen/Shader/SnowflakeParticleUpdate.compute
  5. 14
      Unity_2018_Frozen/Assets/KinectOpticalFlow/KinectOpticalFlow.cs
  6. 10
      Unity_2018_Frozen/Assets/Klak/DFVolume.meta
  7. 9
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor.meta
  8. 17
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeDataEditor.cs
  9. 12
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeDataEditor.cs.meta
  10. 70
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeSamplerEditor.cs
  11. 12
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeSamplerEditor.cs.meta
  12. 35
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeVisualizer.cs
  13. 12
      Unity_2018_Frozen/Assets/Klak/DFVolume/Editor/VolumeVisualizer.cs.meta
  14. 9
      Unity_2018_Frozen/Assets/Klak/DFVolume/Shader.meta
  15. 60
      Unity_2018_Frozen/Assets/Klak/DFVolume/Shader/Visualizer.shader
  16. 9
      Unity_2018_Frozen/Assets/Klak/DFVolume/Shader/Visualizer.shader.meta
  17. 54
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeData.cs
  18. 12
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeData.cs.meta
  19. 122
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeSampler.cs
  20. 12
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeSampler.cs.meta
  21. 49
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeVisualizer.cs
  22. 15
      Unity_2018_Frozen/Assets/Klak/DFVolume/VolumeVisualizer.cs.meta

@ -557,7 +557,96 @@ MonoBehaviour:
smokeFluidSim: {fileID: 774429923}
particleViewerMesh: {fileID: 776169031}
rate: 0.001
volumeData: {fileID: 11400000, guid: bddc8b83040ed4c4a83cd1283d458790, type: 2}
value: 0
debug:
--- !u!1 &353335467
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 353335468}
- component: {fileID: 353335469}
m_Layer: 0
m_Name: Visualizer Grad
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &353335468
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353335467}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5.94, y: -3.88, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 1007466426}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &353335469
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353335467}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 86572f0349d91434d90f40861f708217, type: 3}
m_Name:
m_EditorClassIdentifier:
_data: {fileID: 11400000, guid: bddc8b83040ed4c4a83cd1283d458790, type: 2}
_mode: 1
_depth: 0
_quadMesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
_shader: {fileID: 4800000, guid: e87e89fb693f01e47ac90f63e832ed83, type: 3}
--- !u!1 &362245701
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 362245702}
- component: {fileID: 362245703}
m_Layer: 0
m_Name: Sampler
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &362245702
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 362245701}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 4, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1007466426}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &362245703
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 362245701}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b8cecf65d18af24daf10718a8526e01, type: 3}
m_Name:
m_EditorClassIdentifier:
_resolution: 64
_extent: 4
--- !u!1 &368967883
GameObject:
m_ObjectHideFlags: 0
@ -951,6 +1040,51 @@ MonoBehaviour:
m_EditorClassIdentifier:
bufferName: uniform_buffer
uniform: {fileID: 11400000, guid: 86d4ce704ed55d343a52fed03681663d, type: 2}
--- !u!1 &474490317
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 474490318}
- component: {fileID: 474490319}
m_Layer: 0
m_Name: Visualizer Dist
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &474490318
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 474490317}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5.09, y: -3.88, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 1007466426}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &474490319
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 474490317}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 86572f0349d91434d90f40861f708217, type: 3}
m_Name:
m_EditorClassIdentifier:
_data: {fileID: 11400000, guid: bddc8b83040ed4c4a83cd1283d458790, type: 2}
_mode: 0
_depth: 1
_quadMesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
_shader: {fileID: 4800000, guid: e87e89fb693f01e47ac90f63e832ed83, type: 3}
--- !u!1 &528715328
GameObject:
m_ObjectHideFlags: 0
@ -1085,7 +1219,6 @@ GameObject:
m_Component:
- component: {fileID: 569878377}
- component: {fileID: 569878376}
- component: {fileID: 569878375}
- component: {fileID: 569878374}
m_Layer: 0
m_Name: Plane
@ -1128,20 +1261,6 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!64 &569878375
MeshCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 569878373}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 3
m_Convex: 0
m_CookingOptions: 14
m_SkinWidth: 0.01
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &569878376
MeshFilter:
m_ObjectHideFlags: 0
@ -1220,6 +1339,90 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &711251199
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 711251200}
- component: {fileID: 711251203}
- component: {fileID: 711251202}
- component: {fileID: 711251201}
m_Layer: 0
m_Name: Sphere
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &711251200
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 711251199}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.04, z: 2.37}
m_LocalScale: {x: 3.590428, y: 3.5904257, z: 3.5904257}
m_Children: []
m_Father: {fileID: 2145210098}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &711251201
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 711251199}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!135 &711251202
SphereCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 711251199}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &711251203
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 711251199}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &732632614
GameObject:
m_ObjectHideFlags: 0
@ -1333,7 +1536,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_LocalPosition.y
value: 2
value: 4
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_LocalPosition.z
@ -1385,11 +1588,11 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_LocalScale.y
value: 4
value: 8
objectReference: {fileID: 0}
- target: {fileID: 11400000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_height
value: 32
value: 64
objectReference: {fileID: 0}
- target: {fileID: 11400000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_advectionType
@ -1451,6 +1654,10 @@ Prefab:
propertyPath: timeStepMultiplier
value: 5
objectReference: {fileID: 0}
- target: {fileID: 100000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 0b40c0b4ea4208b4792d95085b850676, type: 2}
m_IsPrefabParent: 0
@ -1551,6 +1758,90 @@ MonoBehaviour:
material: {fileID: 2100000, guid: 0858735f439783448b9cc855a56a9e94, type: 2}
shader: {fileID: 7200000, guid: 226ca53b2a6b1f34cb8e462337683d07, type: 3}
references: []
--- !u!1 &785725808
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 785725809}
- component: {fileID: 785725812}
- component: {fileID: 785725811}
- component: {fileID: 785725810}
m_Layer: 0
m_Name: Sphere (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &785725809
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785725808}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.77, y: 0.04, z: 2.37}
m_LocalScale: {x: 3.086265, y: 3.086265, z: 3.086265}
m_Children: []
m_Father: {fileID: 2145210098}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &785725810
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785725808}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!135 &785725811
SphereCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785725808}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &785725812
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 785725808}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &810572921
GameObject:
m_ObjectHideFlags: 0
@ -1717,6 +2008,38 @@ CanvasRenderer:
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 914653314}
--- !u!1 &1007466425
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1007466426}
m_Layer: 0
m_Name: DFVolume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1007466426
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1007466425}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2145210098}
- {fileID: 362245702}
- {fileID: 474490318}
- {fileID: 353335468}
m_Father: {fileID: 0}
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1035960133
GameObject:
m_ObjectHideFlags: 0
@ -2003,6 +2326,174 @@ Canvas:
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &1493994142
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1493994143}
- component: {fileID: 1493994146}
- component: {fileID: 1493994145}
- component: {fileID: 1493994144}
m_Layer: 0
m_Name: Sphere (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1493994143
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1493994142}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1.71, y: 0.04, z: 2.37}
m_LocalScale: {x: 2.4301288, y: 2.4301288, z: 2.4301288}
m_Children: []
m_Father: {fileID: 2145210098}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &1493994144
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1493994142}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!135 &1493994145
SphereCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1493994142}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &1493994146
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1493994142}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1555216961
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1555216962}
- component: {fileID: 1555216965}
- component: {fileID: 1555216964}
- component: {fileID: 1555216963}
m_Layer: 0
m_Name: Sphere (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1555216962
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1555216961}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 2.47, y: 0.04, z: 2.37}
m_LocalScale: {x: 2.074109, y: 2.0741088, z: 2.0741088}
m_Children: []
m_Father: {fileID: 2145210098}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &1555216963
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1555216961}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!135 &1555216964
SphereCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1555216961}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &1555216965
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1555216961}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1579390332
GameObject:
m_ObjectHideFlags: 0
@ -2263,3 +2754,35 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2145210097
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 2145210098}
m_Layer: 0
m_Name: Obstacle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2145210098
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2145210097}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 711251200}
- {fileID: 1493994143}
- {fileID: 1555216962}
- {fileID: 785725809}
m_Father: {fileID: 1007466426}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

@ -13,7 +13,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
numRate: 1
movement: 1
geomSize: 0.306
geomSize: 0.274
velocityDamping: 0.95
lifeDuration: 7
lifeVariation: 0

@ -32,6 +32,11 @@ namespace UltraCombos.Frozen
[Range(0, 1)]
public float rate = 1.0f;
[SerializeField] DFVolume.VolumeData volumeData;
ComputeBuffer volume_buffer;
[SerializeField, Range(0, 1)]
float value = 0;
[SerializeField]
string debug;
@ -53,12 +58,15 @@ namespace UltraCombos.Frozen
OnReset();
}
debug = string.Format("{0}", volumeData.data[(int)Mathf.Min(volumeData.data.Count * value, volumeData.data.Count - 1)]);
UpdateParticle(Time.fixedDeltaTime);
}
private void OnDestroy()
{
Utilities.Release(ref args_buffer);
Utilities.Release(ref volume_buffer);
}
private void OnReset()
@ -72,6 +80,12 @@ namespace UltraCombos.Frozen
args_buffer = shader.CreateIndirectComputeArgsBuffer(maxParticles, 1, 1);
}
{
var data = volumeData.data;
volume_buffer = new ComputeBuffer(data.Count, sizeof(float) * 4);
volume_buffer.SetData(data);
}
{
buffer_data = new List<Particle>();
yield return Utilities.GetRandomParticleData(maxParticles, buffer_data);
@ -106,6 +120,8 @@ namespace UltraCombos.Frozen
shader.SetBuffer(0, "home_position_buffer", kinectOpticalFlow.HomePositionBuffer);
shader.SetBuffer(0, "home_velocity_buffer", kinectOpticalFlow.HomeVelocityBuffer);
shader.SetBuffer(0, "fluid_velocity_buffer", smokeFluidSim.VelocityBuffer);
shader.SetBuffer(0, "volume_data", volume_buffer);
shader.SetTexture(0, "DFVolume", volumeData.texture);
shader.DispatchIndirect(0, args_buffer);
}

@ -25,6 +25,14 @@ RWStructuredBuffer<ParticleUniforms> uniform_buffer;
RWStructuredBuffer<float4> home_position_buffer;
RWStructuredBuffer<float4> home_velocity_buffer;
RWStructuredBuffer<float3> fluid_velocity_buffer;
RWStructuredBuffer<float4> volume_data;
Texture3D<float4> DFVolume;
SamplerState samplerDFVolume;
float4 SampleVolume(float3 p)
{
return DFVolume.SampleLevel(samplerDFVolume, p, 0);
}
[numthreads(WORK_GROUP_SIZE, 1, 1)]
void CSMain(uint3 id : SV_DispatchThreadID)
@ -107,11 +115,29 @@ void CSMain(uint3 id : SV_DispatchThreadID)
// fluid
{
float3 dim = ((p.position - FluidGridRoot) / FluidGridSize) * FluidGridDim;
dim = clamp(dim, float3(0, 0, 0), FluidGridDim - 1);
int idx = (int)dim.x + (int)dim.y * FluidGridDim.x + (int)dim.z * FluidGridDim.x * FluidGridDim.y;
float3 F = fluid_velocity_buffer[idx].xyz * 1.0f;
acc += F * uni.impulseStrength;
}
// volume
{
//float3 volume_dim = float3(50, 50, 50);
//float3 dim = ((p.position - FluidGridRoot) / FluidGridSize) * volume_dim;
//dim = clamp(dim, float3(0, 0, 0), volume_dim - 1);
//int idx = (int)dim.x + (int)dim.y * volume_dim.x + (int)dim.z * volume_dim.x * volume_dim.y;
float4 df = SampleVolume((p.position - FluidGridRoot) / FluidGridSize);
float3 F = -df.xyz * pow(df.w / 0.5, 2.2);
F += cross(-df.xyz, float3(1, 0, 0)) * (1.0 - saturate(df.w / 0.2)) * 0.05;
//float4 data = volume_data[idx];
//float3 F = -data.xyz * pow(data.w, 2.2);
//F += cross(-data.xyz, float3(1, 0, 0)) * (1.0 - saturate(data.w)) * 0.1;
//if (data.w < 0.1) F += data.xyz * 10.0;
//float3 F = lerp(cross(data.xyz, p.velocity), -data.xyz, saturate(data.w));
acc += F * 60.0;
}
// cosine gradient
{
float t = (uni.lifeDuration > 0.1f) ? clamp(p.life, 0.0f, 1.0f) : factor;

@ -50,7 +50,7 @@ namespace UltraCombos
public ComputeBuffer HomePositionBuffer { get { return home_position_buffer; } }
ComputeBuffer home_velocity_buffer;
public ComputeBuffer HomeVelocityBuffer { get { return home_velocity_buffer; } }
ComputeBuffer count_buffer;
ComputeBuffer home_count_buffer;
int home_count = 0;
public int HomeCount { get { return home_count; } }
@ -71,7 +71,7 @@ namespace UltraCombos
{
home_position_buffer = new ComputeBuffer(512 * 424, sizeof(float) * 4, ComputeBufferType.Append);
home_velocity_buffer = new ComputeBuffer(512 * 424, sizeof(float) * 4, ComputeBufferType.Append);
count_buffer = new ComputeBuffer(1, sizeof(int), ComputeBufferType.Raw);
home_count_buffer = new ComputeBuffer(1, sizeof(int), ComputeBufferType.Raw);
}
}
@ -110,9 +110,9 @@ namespace UltraCombos
}
{
ComputeBuffer.CopyCount(home_position_buffer, count_buffer, 0);
var data = new int[count_buffer.count];
count_buffer.GetData(data);
ComputeBuffer.CopyCount(home_position_buffer, home_count_buffer, 0);
var data = new int[home_count_buffer.count];
home_count_buffer.GetData(data);
home_count = data[0];
debugInfo = string.Format("{0}", home_count);
home_position_buffer.SetCounterValue(0);
@ -170,6 +170,10 @@ namespace UltraCombos
clear_grid_buffer_args_buffer.Release();
args_buffer.Release();
KinectGridBuffer.Release();
home_position_buffer.Release();
home_velocity_buffer.Release();
home_count_buffer.Release();
}
}

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: ca518c47d081cd74da803a9492ef8bc7
folderAsset: yes
timeCreated: 1520409176
licenseType: Free
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: aab843967d2cba349b396e899e4a4f3e
folderAsset: yes
timeCreated: 1495866268
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,17 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using UnityEngine;
using UnityEditor;
namespace DFVolume
{
[CustomEditor(typeof(VolumeData))]
class VolumeDataEditor : Editor
{
public override void OnInspectorGUI()
{
// There is nothing to show in the inspector.
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e4bc68d473b019949ad3452e429eca70
timeCreated: 1495873608
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,70 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace DFVolume
{
[CanEditMultipleObjects]
[CustomEditor(typeof(VolumeSampler))]
class VolumeSamplerEditor : Editor
{
SerializedProperty _resolution;
SerializedProperty _extent;
void OnEnable()
{
_resolution = serializedObject.FindProperty("_resolution");
_extent = serializedObject.FindProperty("_extent");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(_resolution);
EditorGUILayout.PropertyField(_extent);
serializedObject.ApplyModifiedProperties();
if (GUILayout.Button("Create Volume Data")) CreateVolumeData();
CheckSkewedTransform();
}
void CreateVolumeData()
{
var output = new List<Object>();
foreach (VolumeSampler sampler in targets)
{
var path = "Assets/New Volume Data.asset";
path = AssetDatabase.GenerateUniqueAssetPath(path);
var asset = ScriptableObject.CreateInstance<VolumeData>();
asset.Initialize(sampler);
AssetDatabase.CreateAsset(asset, path);
AssetDatabase.AddObjectToAsset(asset.texture, asset);
}
AssetDatabase.SaveAssets();
EditorUtility.FocusProjectWindow();
Selection.objects = output.ToArray();
}
void CheckSkewedTransform()
{
if (targets.Any(o => ((Component)o).transform.lossyScale != Vector3.one))
EditorGUILayout.HelpBox(
"Using scale in transform may introduce error in output volumes.",
MessageType.Warning
);
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4672eacadf8f922469c2d31bc2c8cc98
timeCreated: 1495866282
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,35 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using UnityEngine;
using UnityEditor;
namespace DFVolume
{
[CanEditMultipleObjects]
[CustomEditor(typeof(VolumeVisualizer))]
class VolumeVisualizerEditor : Editor
{
SerializedProperty _data;
SerializedProperty _mode;
SerializedProperty _depth;
void OnEnable()
{
_data = serializedObject.FindProperty("_data");
_mode = serializedObject.FindProperty("_mode");
_depth = serializedObject.FindProperty("_depth");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(_data);
EditorGUILayout.PropertyField(_mode);
EditorGUILayout.PropertyField(_depth);
serializedObject.ApplyModifiedProperties();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9e6edf4b9a972704f92c4329f66b08e5
timeCreated: 1495949435
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f9932d3e3540d7d42967c0084417fc5c
folderAsset: yes
timeCreated: 1495885014
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,60 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
Shader "Hidden/DFVolume/Visualizer"
{
Properties
{
_MainTex("", 3D) = "white" {}
}
CGINCLUDE
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD;
};
sampler3D _MainTex;
float _Depth;
float _Mode;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = v.texcoord;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
fixed4 data = tex3D(_MainTex, float3(i.texcoord, _Depth));
fixed dist = abs(0.5 - frac(data.a * 10)) * 2;
fixed3 grad = data.rgb + 0.5;
return fixed4(lerp(dist, grad, _Mode), 1);
}
ENDCG
SubShader
{
Tags { "RenderType"="Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
}

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: e87e89fb693f01e47ac90f63e832ed83
timeCreated: 1495876326
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,54 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using System.Collections.Generic;
using UnityEngine;
namespace DFVolume
{
public class VolumeData : ScriptableObject
{
#region Exposed attributes
[SerializeField] Texture3D _texture;
public Texture3D texture {
get { return _texture; }
}
List<Vector4> _data;
public List<Vector4> data
{
get { return _data; }
}
#endregion
#if UNITY_EDITOR
#region Editor functions
public void Initialize(VolumeSampler sampler)
{
var bmp = sampler.GenerateBitmap();
var dim = sampler.resolution;
_texture = new Texture3D(dim, dim, dim, TextureFormat.RGBAHalf, true);
_texture.name = "Distance Field Texture";
_texture.filterMode = FilterMode.Bilinear;
_texture.wrapMode = TextureWrapMode.Clamp;
_texture.SetPixels(bmp);
_texture.Apply();
_data = new List<Vector4>();
foreach (var c in bmp)
_data.Add(new Vector4(c.r, c.g, c.b, c.a));
}
#endregion
#endif
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 432ac308e27df9f4ebdfd3523b98cad3
timeCreated: 1495869190
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,122 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using UnityEngine;
namespace DFVolume
{
public class VolumeSampler : MonoBehaviour
{
#region Exposed attributes
[SerializeField] int _resolution = 50;
public int resolution {
get { return _resolution; }
}
[SerializeField] float _extent = 0.5f;
public float extent {
get { return _extent; }
}
#endregion
#if UNITY_EDITOR
#region Editor functions
void OnDrawGizmos()
{
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.color = Color.yellow;
Gizmos.DrawWireCube(Vector3.zero, Vector3.one * _extent * 2);
}
public Color[] GenerateBitmap()
{
// Generate a distance field.
var df = new float[_resolution * _resolution * _resolution];
for (var xi = 0; xi < _resolution; xi++)
{
var x = 2.0f * xi / (_resolution - 1) - 1;
for (var yi = 0; yi < _resolution; yi++)
{
var y = 2.0f * yi / (_resolution - 1) - 1;
for (var zi = 0; zi < _resolution; zi++)
{
var z = 2.0f * zi / (_resolution - 1) - 1;
var pt = new Vector3(x, y, z) * _extent;
pt = transform.TransformPoint(pt);
var dist = SearchDistance(pt) * 0.5f / _extent;
df[GetIndex(xi, yi, zi)] = dist;
}
}
}
// Compute gradients and pack them into a bitmap.
var bmp = new Color[df.Length];
var dds2 = (_resolution - 1) / 2.0f;
for (var xi = 0; xi < _resolution; xi++)
{
for (var yi = 0; yi < _resolution; yi++)
{
for (var zi = 0; zi < _resolution; zi++)
{
var d = df[GetIndex(xi, yi, zi)];
var dx0 = df[GetIndex(xi - 1, yi, zi)];
var dx1 = df[GetIndex(xi + 1, yi, zi)];
var dy0 = df[GetIndex(xi, yi - 1, zi)];
var dy1 = df[GetIndex(xi, yi + 1, zi)];
var dz0 = df[GetIndex(xi, yi, zi - 1)];
var dz1 = df[GetIndex(xi, yi, zi + 1)];
bmp[GetIndex(xi, yi, zi)] = new Color(
(dx1 - dx0) * dds2,
(dy1 - dy0) * dds2,
(dz1 - dz0) * dds2,
d
);
}
}
}
return bmp;
}
#endregion
#region Private functions
int GetIndex(int xi, int yi, int zi)
{
xi = Mathf.Clamp(xi, 0, _resolution - 1);
yi = Mathf.Clamp(yi, 0, _resolution - 1);
zi = Mathf.Clamp(zi, 0, _resolution - 1);
return xi + _resolution * (yi + _resolution * zi);
}
float SearchDistance(Vector3 pt)
{
var r = _extent;
var s = _extent * 0.5f;
for (var i = 0; i < 10; i++)
{
r += (Physics.CheckSphere(pt, r) ? -1 : 1) * s;
s *= 0.5f;
}
return r;
}
#endregion
#endif
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8b8cecf65d18af24daf10718a8526e01
timeCreated: 1495864966
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,49 @@
// DFVolume - Distance field volume generator for Unity
// https://github.com/keijiro/DFVolume
using UnityEngine;
namespace DFVolume
{
[ExecuteInEditMode]
public class VolumeVisualizer : MonoBehaviour
{
enum Mode { Distance, Gradient }
[SerializeField] VolumeData _data;
[SerializeField] Mode _mode;
[SerializeField, Range(0, 1)] float _depth = 0.5f;
[SerializeField, HideInInspector] Mesh _quadMesh;
[SerializeField, HideInInspector] Shader _shader;
Material _material;
void OnDestroy()
{
if (_material != null)
if (Application.isPlaying)
Destroy(_material);
else
DestroyImmediate(_material);
}
void Update()
{
if (_material == null)
{
_material = new Material(_shader);
_material.hideFlags = HideFlags.DontSave;
}
_material.SetTexture("_MainTex", _data.texture);
_material.SetFloat("_Depth", _depth);
_material.SetFloat("_Mode", (int)_mode);
Graphics.DrawMesh(
_quadMesh, transform.localToWorldMatrix,
_material, gameObject.layer
);
}
}
}

@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 86572f0349d91434d90f40861f708217
timeCreated: 1495884309
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences:
- _data: {instanceID: 0}
- _quadMesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
- _shader: {fileID: 4800000, guid: e87e89fb693f01e47ac90f63e832ed83, type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save