diff --git a/Unity_2018_Frozen/Assets/Frozen/Frozen.unity b/Unity_2018_Frozen/Assets/Frozen/Frozen.unity index c87c0ae..6fd3590 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Frozen.unity +++ b/Unity_2018_Frozen/Assets/Frozen/Frozen.unity @@ -23,7 +23,7 @@ RenderSettings: m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 + m_AmbientIntensity: 0.5 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 2100000, guid: d8da8ee0c05959f40b595cff10460db1, type: 2} @@ -37,7 +37,7 @@ RenderSettings: m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} + m_Sun: {fileID: 1071731254} m_IndirectSpecularColor: {r: 0.021216419, g: 0.053037528, b: 0.08577963, a: 1} --- !u!157 &3 LightmapSettings: @@ -548,13 +548,15 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: reset: 0 - maxParticles: 100000 + maxParticles: 500000 particleBuffer: {fileID: 438615022} shader: {fileID: 7200000, guid: d6604fabdbb13e9428c849c59feccdac, type: 3} uniformBuffer: {fileID: 441718966} cosineGradient: {fileID: 11400000, guid: 2138651e11178d04ba510ef9164baf46, type: 2} kinectOpticalFlow: {fileID: 1848145251} smokeFluidSim: {fileID: 774429923} + particleViewerMesh: {fileID: 776169031} + rate: 0.001 debug: --- !u!1 &368967883 GameObject: @@ -566,6 +568,7 @@ GameObject: - component: {fileID: 368967886} - component: {fileID: 368967885} - component: {fileID: 368967884} + - component: {fileID: 368967887} m_Layer: 0 m_Name: Camera m_TagString: Untagged @@ -679,6 +682,22 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!114 &368967887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 368967883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fda5366b87aa3934a8e5823faa38f54c, type: 3} + m_Name: + m_EditorClassIdentifier: + sharingName: UnitySender + textureFormat: 28 + yFlip: 1 + output: {fileID: 0} + m_Shader: {fileID: 0} --- !u!1 &386695295 GameObject: m_ObjectHideFlags: 0 @@ -708,7 +727,7 @@ Transform: - {fileID: 850228141} - {fileID: 1848145250} m_Father: {fileID: 0} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &401185750 GameObject: @@ -740,7 +759,7 @@ Transform: - {fileID: 1579390333} - {fileID: 343589999} m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &438615021 GameObject: @@ -905,7 +924,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 732632615} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &441718965 MonoBehaviour: @@ -1229,9 +1248,8 @@ Transform: - {fileID: 438615023} - {fileID: 350883108} - {fileID: 776169028} + - {fileID: 1035960134} - {fileID: 441718964} - - {fileID: 1375512056} - - {fileID: 1924148041} m_Father: {fileID: 0} m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1268,7 +1286,7 @@ RectTransform: m_AnchorMin: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 640, y: 360} + m_SizeDelta: {x: 360, y: 360} m_Pivot: {x: 1, y: 1} --- !u!114 &770059768 MonoBehaviour: @@ -1699,6 +1717,48 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 914653314} +--- !u!1 &1035960133 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1035960134} + - component: {fileID: 1035960135} + m_Layer: 0 + m_Name: ParticleViewerUnlit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1035960134 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1035960133} + 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: [] + m_Father: {fileID: 732632615} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1035960135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1035960133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2f970277ae55db488ae9e5e4d484912, type: 3} + m_Name: + m_EditorClassIdentifier: + buffer: {fileID: 438615022} + material: {fileID: 2100000, guid: 56457e5f2df74a44c933b2791da81324, type: 2} --- !u!1 &1071731253 GameObject: m_ObjectHideFlags: 0 @@ -1844,47 +1904,6 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1196719910} ---- !u!1 &1375512055 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1375512056} - - component: {fileID: 1375512057} - m_Layer: 0 - m_Name: HomeBuffer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1375512056 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1375512055} - 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: [] - m_Father: {fileID: 732632615} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1375512057 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1375512055} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afa75a2a1fe8aff4ab1d6418df9d62dd, type: 3} - m_Name: - m_EditorClassIdentifier: - bufferName: home_buffer --- !u!1 &1390635887 GameObject: m_ObjectHideFlags: 0 @@ -1912,7 +1931,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1390635889 MonoBehaviour: @@ -2182,47 +2201,6 @@ MonoBehaviour: colorize: 1 debugMaterial: {fileID: 2100000, guid: 95b4d9b25b7a7e3449627228b10d9009, type: 2} debugInfo: ---- !u!1 &1924148040 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1924148041} - - component: {fileID: 1924148042} - m_Layer: 0 - m_Name: HomeVelocityBuffer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1924148041 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1924148040} - 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: [] - m_Father: {fileID: 732632615} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1924148042 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1924148040} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afa75a2a1fe8aff4ab1d6418df9d62dd, type: 3} - m_Name: - m_EditorClassIdentifier: - bufferName: home_buffer --- !u!1 &2129467936 GameObject: m_ObjectHideFlags: 0 diff --git a/Unity_2018_Frozen/Assets/Frozen/FrozenCanvas.renderTexture b/Unity_2018_Frozen/Assets/Frozen/FrozenCanvas.renderTexture index b84ce4d..af61e94 100644 --- a/Unity_2018_Frozen/Assets/Frozen/FrozenCanvas.renderTexture +++ b/Unity_2018_Frozen/Assets/Frozen/FrozenCanvas.renderTexture @@ -11,8 +11,8 @@ RenderTexture: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 - m_Width: 3840 - m_Height: 2160 + m_Width: 2048 + m_Height: 2048 m_AntiAliasing: 1 m_DepthFormat: 0 m_ColorFormat: 0 diff --git a/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat b/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat new file mode 100644 index 0000000..b15594a --- /dev/null +++ b/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat @@ -0,0 +1,98 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Point + m_Shader: {fileID: 4800000, guid: 44b738c16dcfd5445b9019d3c98e1a3c, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 0 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 + - _DstBlend: 0 + - _Emission: 5 + - _EmissionEnabled: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _InvFade: 1 + - _LightingEnabled: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Size: 0.003 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 0.7132353, g: 0.9620458, b: 1, a: 1} + - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} diff --git a/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat.meta b/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat.meta new file mode 100644 index 0000000..474664d --- /dev/null +++ b/Unity_2018_Frozen/Assets/Frozen/Material/Point.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 56457e5f2df74a44c933b2791da81324 +timeCreated: 1519897176 +licenseType: Free +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_2018_Frozen/Assets/Frozen/Material/Snowflake.mat b/Unity_2018_Frozen/Assets/Frozen/Material/Snowflake.mat index 088cc74..3613223 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Material/Snowflake.mat +++ b/Unity_2018_Frozen/Assets/Frozen/Material/Snowflake.mat @@ -91,7 +91,7 @@ Material: - _ZWrite: 1 m_Colors: - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} - - _Color: {r: 5.168, g: 5.168, b: 5.168, a: 1} + - _Color: {r: 5, g: 5, b: 5, a: 1} - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} - _EmissionColor: {r: 0.787, g: 0.787, b: 0.787, a: 1} - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} diff --git a/Unity_2018_Frozen/Assets/Frozen/ParticleUniforms.asset b/Unity_2018_Frozen/Assets/Frozen/ParticleUniforms.asset index f01b917..f95809c 100644 --- a/Unity_2018_Frozen/Assets/Frozen/ParticleUniforms.asset +++ b/Unity_2018_Frozen/Assets/Frozen/ParticleUniforms.asset @@ -13,7 +13,7 @@ MonoBehaviour: m_EditorClassIdentifier: numRate: 1 movement: 1 - geomSize: 0.2 + geomSize: 0.306 velocityDamping: 0.95 lifeDuration: 7 lifeVariation: 0 diff --git a/Unity_2018_Frozen/Assets/Frozen/Script/SnowflakeParticleUpdater.cs b/Unity_2018_Frozen/Assets/Frozen/Script/SnowflakeParticleUpdater.cs index 7c58740..d30796b 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Script/SnowflakeParticleUpdater.cs +++ b/Unity_2018_Frozen/Assets/Frozen/Script/SnowflakeParticleUpdater.cs @@ -26,6 +26,11 @@ namespace UltraCombos.Frozen KinectOpticalFlow kinectOpticalFlow; [SerializeField] FluidSim3DProject.SmokeFluidSim smokeFluidSim; + [SerializeField] + ParticleViewerMesh particleViewerMesh; + [SerializeField] + [Range(0, 1)] + public float rate = 1.0f; [SerializeField] string debug; @@ -33,6 +38,7 @@ namespace UltraCombos.Frozen private void Start() { uniforms = uniformBuffer.uniform as ParticleUniforms; + particleViewerMesh.BufferCount = (int)(maxParticles * rate); StartCoroutine(Initialize()); } @@ -62,13 +68,6 @@ namespace UltraCombos.Frozen private IEnumerator Initialize() { -#if false - { - uint[] args = new uint[3] { (uint)Mathf.CeilToInt((float)maxHomes / WORK_GROUP_SIZE), 1, 1 }; - home_args_buffer = new ComputeBuffer(1, args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); - home_args_buffer.SetData(args); - } -#endif { args_buffer = shader.CreateIndirectComputeArgsBuffer(maxParticles, 1, 1); } diff --git a/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader b/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader new file mode 100644 index 0000000..f55a0c9 --- /dev/null +++ b/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader @@ -0,0 +1,113 @@ +Shader "UltraCombos/Frozen/ParticleUnlitPoint" +{ + Properties + { + _Color("Color", Color) = (1,1,1,1) + _MainTex("Albedo (RGB)", 2D) = "white" {} + _Emission("Emission", Range(0, 5)) = 0.0 + _Size("Size", Range(0, 1)) = 0.1 + } + + SubShader + { + Tags{ "RenderType" = "Opaque" } + LOD 100 + Blend One One + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma geometry geom + #pragma fragment frag + #pragma multi_compile_fog + + #include "../../ParticleWorks/Shader/Inc/Defines.cginc" + #include "UnityCG.cginc" + + struct v2g + { + float4 vertex : SV_POSITION; + }; + + struct g2f + { + float4 vertex : SV_POSITION; + float2 uv : TEXCOORD; + UNITY_FOG_COORDS(1) + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + fixed4 _Color; + half _Emission; + half _Size; + float4x4 model_matrix; + +#ifdef SHADER_API_D3D11 + StructuredBuffer ssbo; +#endif + + v2g vert(appdata_base v, uint vid : SV_VertexID) + { + v2g o = (v2g)0; +#ifdef SHADER_API_D3D11 + o.vertex = mul(model_matrix, float4(ssbo[vid].position, ssbo[vid].life)); +#endif + return o; + } + + [maxvertexcount(6)] + void geom(point v2g input[1], inout TriangleStream OutputStream) + { + float3 position = input[0].vertex.xyz; + position = UnityObjectToViewPos(position); + float size = _Size * pow(saturate(1.0f - input[0].vertex.w), 1.0f / 2.2f); + const int side = 4; + float3 vertices[side]; + float2 uvs[side]; + + float delta_a = UNITY_PI * 2.0f / side; + for (int i = 0; i < side; i++) + { + float a = delta_a * i; + float x = cos(-a); + float y = sin(-a); + vertices[i] = position + float3(x * size, y * size, 0); + uvs[i] = float2(x, y) * 0.5f + 0.5f; + } + + g2f o = (g2f)0; + + int index; + for (int k = 0; k < side - 2; k++) + { + for (int j = 0; j < 3; j++) + { + index = (j == 0) ? 0 : (k + j); + + o.vertex = mul(UNITY_MATRIX_P, float4(vertices[index], 1.0f)); + o.uv = TRANSFORM_TEX(uvs[index], _MainTex); + UNITY_TRANSFER_FOG(o, o.vertex); + OutputStream.Append(o); + } + + OutputStream.RestartStrip(); + } + + } + + fixed4 frag(g2f i) : SV_Target + { + clip(0.5f / sqrt(2.0f) - length(i.uv - float2(0.5f, 0.5f))); + + fixed4 col = tex2D(_MainTex, i.uv) * _Color; + col.rgb *= 1 + _Emission; + UNITY_APPLY_FOG(i.fogCoord, col); + return col; + } + ENDCG + } + } +} diff --git a/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader.meta b/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader.meta new file mode 100644 index 0000000..3ee52cf --- /dev/null +++ b/Unity_2018_Frozen/Assets/Frozen/Shader/FrozenParticleUnlitPoint.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 44b738c16dcfd5445b9019d3c98e1a3c +timeCreated: 1519897326 +licenseType: Free +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_2018_Frozen/Assets/ParticleWorks/Script/ParticleViewerMesh.cs b/Unity_2018_Frozen/Assets/ParticleWorks/Script/ParticleViewerMesh.cs index 1102fc8..ed0fbdb 100644 --- a/Unity_2018_Frozen/Assets/ParticleWorks/Script/ParticleViewerMesh.cs +++ b/Unity_2018_Frozen/Assets/ParticleWorks/Script/ParticleViewerMesh.cs @@ -18,6 +18,9 @@ namespace UltraCombos public ComputeBuffer vertexBuffer { get { return vertex_buffer; } } + int buffer_count = 0; + public int BufferCount { set { buffer_count = value; } } + protected override void OnFixedUpdate() { shader.SetBuffer(0, buffer.bufferName, buffer.obj); @@ -89,7 +92,8 @@ namespace UltraCombos } mesh = new Mesh(); - yield return Utilities.GetReferencesParticleMesh(references, buffer.count, mesh); + int max_particles = buffer_count > 0 ? buffer_count : buffer.count; + yield return Utilities.GetReferencesParticleMesh(references, max_particles, mesh); { mesh.name = string.Format("v: {0}", mesh.vertexCount);