451 lines
38 KiB
JSON
451 lines
38 KiB
JSON
{
|
||
"introduction":
|
||
"""Welcome to the VFX Learning Samples.
|
||
This collection is composed of various <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/index.html">VFX Graphs</a>, each, here, to visually explain one or several aspects of VFX Graph. Those visual examples are packed with notes so that users can get a good understanding of the VFX Graph feature set. This collection will be updated based on users inputs and/or development updates.""",
|
||
|
||
|
||
"samples": [
|
||
{
|
||
"title": "Contexts & Data Flow",
|
||
"prefabName": "Contexts & Data Flow",
|
||
"description":
|
||
"""<ignore><link="Context&Flow.vfx">Open VFX</link>
|
||
<link="00_VFXG_Basic_Flow">Show VFX</link>
|
||
</ignore>
|
||
This VFX is intended to provide an overview and basic understanding of how <b>data flow</b> is articulated in VFX Graph. It also presents an overview of the most frequently used <b>Context Blocks</b>.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/GraphLogicAndPhilosophy.html#processing-workflow-vertical-logic">Data Flow</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Contexts.html">Context Block</a>"""
|
||
},
|
||
{
|
||
"title": "Capacity Count",
|
||
"prefabName": "Capacity",
|
||
"description":
|
||
"""<ignore><link="Capacity.vfx">Open VFX</link>
|
||
<link="Capacity">Show VFX</link>
|
||
</ignore>
|
||
<a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-Initialize.html#context-settings">Capacity Count</a> is used for the particle <b>Memory allocation</b> of a system. Increasing this number will increase the memory allocated.This capacity can be seen as the <b>max active particles</b>.It's a good practice to keep this number as close as possible to the Maximum alive particles.This VFX explains what capacity is and how to use the <b>VFX Control</b> to set the Capacity.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-Initialize.html#context-settings">Capacity</a>
|
||
• Memory allocation
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/VisualEffectGraphWindow.html#vfx-control">VFX Control</a>"""
|
||
},
|
||
{
|
||
"title": "Spawn Context",
|
||
"prefabName": "Spawn Context",
|
||
"description":
|
||
"""<ignore><link="SpawnContext.vfx">Open VFX</link>
|
||
<link="VFXG Spawn Context">Show VFX</link>
|
||
</ignore>
|
||
This VFX is intended to provide information related to the <b>Spawn Context</b>.What is the <b>Spawn Context</b>, what options can be found in the inspector but also extra informations like: What are <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetSpawnEvent.html">Spawn Event Attributes</a> ? How to setup <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetSpawnEvent.html">Spawn Event Attributes</a>? What is the <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SpawnState.html">Spawn State Operator</a>.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-Spawn.html">Spawn Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetSpawnEvent.html">Spawn Event Attributes</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SpawnState.html">Spawn State</a>"""
|
||
},
|
||
{
|
||
"title": "Multiple Outputs",
|
||
"prefabName": "Multiple Outputs",
|
||
"description":
|
||
"""<ignore><link="MultipleOutputs.vfx">Open VFX</link>
|
||
<link="VFXG Multiple Outputs">Show VFX</link>
|
||
</ignore>
|
||
The <b>output context</b> is where everything related to the rendering part of particles is done. You can render particles as <b>billboard quads</b>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputMesh.html">meshes</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputPoint.html">points</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputForwardDecal.html">decals</a>, etc...
|
||
This VFX Graph shows how you can add several outputs to render each particle multiple times.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Contexts.html#output">Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetAttribute.html#block-settings">Composition Mode</a>"""
|
||
},
|
||
{
|
||
"title": "Bounds",
|
||
"prefabName": "Bounds",
|
||
"description":
|
||
"""<ignore><link="BoundsGizmo.vfx">Open VFX</link>
|
||
<link="VFXG Bounds">Show VFX</link>
|
||
</ignore>
|
||
The <b>Bounds</b> are used to <b>cull</b> the VFX when it's not in the <b>camera frustum</b>. <b>Bounds</b> can be manually or automatically set. The <b>VFX Bound</b> is the cumulative Bounds of each System within a VFX Graph. In this example, the <b>Bounds</b> aren't properly set up, so the particles aren't rendering correctly. Don't hesitate to open the VFX to correctly set the <b>Bounds.</b>
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/visual-effect-bounds.html">Bounds</a>
|
||
• Culling"""
|
||
},
|
||
{
|
||
"title": "Orient Face Camera",
|
||
"prefabName": "Orient Face Camera",
|
||
"description":
|
||
"""<ignore><link="OrientFaceCamera.vfx">Open VFX</link>
|
||
<link="VFXG Orient Face Camera">Show VFX</link>
|
||
</ignore>
|
||
Whether the <b>output</b> is set to quads, meshes, or even strips, we often want to control how the geometry is oriented on a particle. Should it <b>face the camera</b>? What is the <b>forward</b> and/or <b>up-axis</b>?
|
||
The <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient Block</a> helps us to easily <b>orient</b> our particles with its various modes. In this example, we're using the <b>Face Camera Position</b> mode, which will ensure that the particles are always facing the Camera position.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">AxisX AxisY AxisZ</a>"""
|
||
},
|
||
{
|
||
"title": "Orient Fixed Axis",
|
||
"prefabName": "Orient Fixed Axis",
|
||
"description":
|
||
"""<ignore><link="OrientFixedAxis.vfx">Open VFX</link>
|
||
<link="VFXG Orient Fixed Axis">Show VFX</link>
|
||
</ignore>
|
||
Whether the <b>Output</b> is set to Quads, Meshes, or even Strips, we often want to control how to orient the geometry on a particle. Should it be <b>facing the camera</b>? What is the <b>forward</b> or <b>Up-Axis</b> ? The <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient Block</a> helps us to easily <b>orient</b> our particles, as it comes with several modes. This example shows how to use the <b>Fixed Axis mode</b>.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">AxisX AxisY AxisZ</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetCustomAttribute.html">Custom Attribute</a>"""
|
||
},
|
||
{
|
||
"title": "Orient Advanced",
|
||
"prefabName": "Orient Advanced",
|
||
"description":
|
||
"""<ignore><link="OrientAdvanced.vfx">Open VFX</link>
|
||
<link="VFXG Orient Advanced">Show VFX</link>
|
||
</ignore>
|
||
Whether the <b>Output</b> is set to Quads, Meshes, or even strips, we often want to control how to orient the geometry on a particle. Should it be <b>facing the camera</b>? What is the <b>forward</b> or <b>Up-Axis</b> ? The <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient Block</a> helps us to easily <b>orient</b> our particles as it comes with many handy modes. This example shows how to use the <b>Advanced Mode</b>.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-Orient.html">Orient</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">AxisX AxisY AxisZ</a>"""
|
||
},
|
||
{
|
||
"title": "Rotation & Angle",
|
||
"prefabName": "Rotation & Angle",
|
||
"description":
|
||
"""<ignore><link="RotationAngle.vfx">Open VFX</link>
|
||
<link="VFXG Rotation & Angle">Show VFX</link>
|
||
</ignore>
|
||
It's often really useful to be able to <b>rotate</b> particles. This VFX shows how to <b>rotate</b> particles thanks to the <b>Angle attribute</b>.
|
||
|
||
<b>Covered Aspects:</b>
|
||
• Rotation
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#advanced-simulation-attributes">Angle attribute</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">Pivot attribute</a>"""
|
||
},
|
||
{
|
||
"title": "Rotation & Angular Velocity",
|
||
"prefabName": "Rotation & Angular Velocity",
|
||
"description":
|
||
"""<ignore><link="AngularVelocity.vfx">Open VFX</link>
|
||
<link="VFXG Rotation & Angular Velocity">Show VFX</link>
|
||
</ignore>
|
||
The <b>Particle’s rotation</b> can be controlled by setting the <b>angle attribute</b>. To get more realistic behavior, you can also, like in this example, use the <b>angular velocity</b>. This attribute is usually set in the <b>Initialize Context</b>, and then, the <b>Update Context</b> is responsible for <b>integrating</b> this <b>angular velocity</b> to update the rotation.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#advanced-simulation-attributes">Angular Velocity</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#advanced-simulation-attributes">Angle</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-UpdateRotation.html">Update Rotation</a>"""
|
||
},
|
||
{
|
||
"title": "TexIndex Attribute",
|
||
"prefabName": "TexIndex Attribute",
|
||
"description":
|
||
"""<ignore><link="BasicTexIndex.vfx">Open VFX</link>
|
||
<link="VFXG TexIndex Attribute">Show VFX</link>
|
||
</ignore>
|
||
It's quite common for VFX artists to rely on <b>sprite sheets</b>. This VFX shows how to use <b>UVs options</b> in the <b>Output</b> to use a <b>sprite sheet</b>. It also explains how to set up the <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-FlipbookPlayer.html">Flipbook Settings</a> and its relationship with the <b>texIndex attribute</b>.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">TexIndex Attribute</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputSharedSettings.html#particle-options-settings">UVs Mode</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-FlipbookPlayer.html">Flipbook</a>"""
|
||
},
|
||
{
|
||
"title": "Flipbook Mode",
|
||
"prefabName": "Flipbook Mode",
|
||
"description":
|
||
"""<ignore><link="FlipbookMode.vfx">Open VFX</link>
|
||
<link="VFXG Flipbook Mode">Show VFX</link>
|
||
</ignore>
|
||
This VFX shows how to set up the <b>UVs mode </b>of the <b>Output</b> to <b>Flipbook</b> to use a <b>Sprite sheet</b>. It also shows the differences of using <b>Flipbook Blend Frames</b> and a basic usage of the <b>Flipbook Player Block</b>. <b>Flipbook Blend Frames</b> setting allows interpolation between the frames. This can help to get smoother looking animation.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-FlipbookPlayer.html">Flipbook Player</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputSharedSettings.html#particle-options-settings">UVs Mode</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">TexIndex Attribute</a>"""
|
||
},
|
||
{
|
||
"title":"Flipbook Blending",
|
||
"prefabName":"Flipbook Blending",
|
||
"description":"""<ignore><link="FlipbookBlending.vfx">Open VFX</link>
|
||
<link="VFXG Flipbook Blending">Show VFX</link>
|
||
</ignore>
|
||
This VFX illustrates the differences between a traditional <b>frame blending</b> and a <b>frame blending</b> using <b>motion vectors</b>. <b>Motion vector blending </b>uses a texture to describe the pixel displacement between two frames. This allows for a very smooth transition between frames, which can be extremely useful for reducing the number of frames in a flipbook or for doing slow-motion.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-FlipbookPlayer.html">Flipbook Player</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputSharedSettings.html#particle-options-settings">UVs Mode</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">TexIndex Attribute</a>"""
|
||
},
|
||
{
|
||
"title": "TexIndex Advanced",
|
||
"prefabName": "TexIndex Advanced",
|
||
"description":
|
||
"""<ignore><link="TexIndexAdvanced.vfx">Open VFX</link>
|
||
<link="VFXG TexIndex Advanced">Show VFX</link>
|
||
</ignore>
|
||
This complex VFX is composed of several systems that are playing with the <b>texIndex attribute</b> creatively. Time, noise, and even particle position are used to control the </b>texIndex attribute</b> and give life to this VFX.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• Flipbook UVs
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">TexIndex Attribute</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-FlipbookPlayer.html">Flipbook Player</a>"""
|
||
},
|
||
{
|
||
"title": "Pivot Attribute",
|
||
"prefabName": "Pivot Attribute",
|
||
"description":
|
||
"""<ignore><link="PivotAttribute.vfx">Open VFX</link>
|
||
<link="VFXG Pivot Attribute">Show VFX</link>
|
||
</ignore>
|
||
The <b>pivot attribute</b> controls where the <b>output render</b> is <b>instantiated</b> regarding the particle position. By default, the<b> pivot</b> is centered on the <b>Particle's Position</b>. But you can offset it on any axis (XYZ). Offsetting the pivot can be extremely helpful as it can lead to appealing motion when doing scaling or rotation.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">Pivot Attribute</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#advanced-simulation-attributes">Angle attribute</a>"""
|
||
},
|
||
{
|
||
"title": "Pivot Advanced",
|
||
"prefabName": "Pivot Advanced",
|
||
"description":
|
||
"""<ignore><link="PivotAdvanced.vfx">Open VFX</link>
|
||
<link="VFXG_Pivot_Advanced">Show VFX</link>
|
||
</ignore>
|
||
Controlling the <b>Pivot</b> of a particle is a key aspect to unlocking interesting motion. This VFX gives an example of <b>Pivot</b> manipulation. Here the petals, leafs and spikes of the flower are all particles. The<b> Pivot attribute</b> is controlled and sometimes animated to be able to properly locate and animate the particles. This example also demonstrates the <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/sg-working-with.html">Shader Graph integration</a> and how you can control a <b>Shader Graph</b> through <b>VFX Graph</b>.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#rendering-attributes">Pivot Attribute</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/sg-working-with.html">Shader Graph integration</a>
|
||
• Activation Port """
|
||
},
|
||
{
|
||
"title": "Sample Mesh",
|
||
"prefabName": "Sample Mesh",
|
||
"description":
|
||
"""<ignore><link="SampleMesh.vfx">Open VFX</link>
|
||
<link="VFXG Sample Mesh">Show VFX</link>
|
||
</ignore>
|
||
This VFX gives an example of how to <b>sample a Mesh</b> to spawn particles on its surface and <b>inherit</b> its <b>Vertex Color</b> of the Mesh. Ambient Occlusion has been baked into the vertex color of the Mesh and is used to set the <b>particle’s color</b>
|
||
|
||
<b>Covered Aspects:</b>
|
||
• Mesh Sampling
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SampleMesh.html">Sample Mesh Operator</a>"""
|
||
},
|
||
{
|
||
"title": "Sample Texture2D",
|
||
"prefabName": "Sample Texture2D",
|
||
"description":
|
||
"""<ignore><link="SampleTexture2D.vfx">Open VFX</link>
|
||
<link="VFXG Sample Texture2D">Show VFX</link>
|
||
</ignore>
|
||
This VFX demonstrates how to use the <b>texture2D sample</b> operator to determine the color of particles and perform <b>rejection sampling</b>. We spawn particles in a 2D grid fashion and use their XY coordinates to <b>sample the texture</b>. We then kill the particles based on a threshold value of the sampled texture values.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SampleTexture2D.html">Texture2D Sample Operator</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Reference-Attributes.html#basic-simulation-attributes">Alive attribute</a>
|
||
• Rejection Sampling"""
|
||
},
|
||
{
|
||
"title": "Sample Signed Distance Field (SDF)",
|
||
"prefabName": "Sample SDF",
|
||
"description":
|
||
"""<ignore><link="SampleSDF.vfx">Open VFX</link>
|
||
<link="VFXG Sample SDF">Show VFX</link>
|
||
</ignore>
|
||
A <b>signed distance field (SDF)</b> is a technique used to efficiently represent the shape and contours of 2D or 3D objects. It allows us to calculate the distance from any point in space to the<b> nearest point</b> on the object's surface. This VFX demonstrates how to <b>sample an SDF</b> to have particles crawling on the surface of a mesh. Note that an <b>SDF Baker tool</b> is provided:
|
||
Window->Visual Effects->Utilities->SDF Bake Tool
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SampleSDF.html">SDF Sample Operator</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-ConformToSignedDistanceField.html">Conform to SDF</a>
|
||
• Strip/trails"""
|
||
},
|
||
{
|
||
"title": "Sample Skinned Mesh",
|
||
"prefabName": "Sample Skinned Mesh",
|
||
"description":
|
||
"""<ignore><link="SampleSkinnedMesh.vfx">Open VFX</link>
|
||
<link="VFXG Sample Skinned Mesh">Show VFX</link>
|
||
</ignore>
|
||
<b>Sampling a skinned mesh</b> enables you to get a lot of information from it, like surface position, vertex colors, UVs, Normals, Velocity etc. This basic example shows how to <b>sample a Skinned Mesh</b> and spawn particles on its surface. We're also<b> getting the UVs</b> of the Skinned Mesh to sample the same texture that the Mesh is using so that we can drive where to spawn feathers on our creature's back.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SampleSkinnedMesh.html">SkinnedMesh Sample Operator</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-SampleTexture2D.html">Texture2D Sample Operator</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetPosition(SkinnedMesh).html">Set position SkinnedMesh</a>"""
|
||
},
|
||
{
|
||
"title": "Collision Properties",
|
||
"prefabName": "Collision Properties",
|
||
"description":
|
||
"""<ignore><link="CollisionBasicProperties.vfx">Open VFX</link>
|
||
<link="VFXG Collision Basic Properties">Show VFX</link>
|
||
</ignore>
|
||
As VFX Graph is <b>simulating particles on the GPU</b>, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithAABox.html">Boxes</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSphere.html">Spheres</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html">Cones</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithPlane.html">Planes</a> or even complex shapes with the use of <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSignedDistanceField.html">SDF</a> and/or <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithDepthBuffer.html">Depth Buffer</a>. This VFX Graph, shows the use of a standard <b>Collider Block</b> and how the different <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html#block-properties">Collision Properties</a> like <b>Bounce</b>, <b>Friction</b> and/or <b>Roughness</b> can influence the <b>collision response</b> of the particles.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html#block-properties">Collision Properties</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSphere.html">Collider Blocks</a>"""
|
||
},
|
||
{
|
||
"title": "Collision Simple",
|
||
"prefabName": "Collision Simple",
|
||
"description":
|
||
"""<ignore><link="CollisionSimple.vfx">Open VFX</link>
|
||
<link="VFXG Collision Simple">Show VFX</link>
|
||
</ignore>
|
||
As VFX Graph is <b>simulating particles on the GPU</b>, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithAABox.html">Boxes</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSphere.html">Spheres</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html">Cones</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithPlane.html">Planes</a> or even complex shapes with the use of <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSignedDistanceField.html">SDF</a> and/or <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithDepthBuffer.html">Depth Buffer</a>. This example shows you how to combine different <b>collider blocks</b> to get the desired results.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html#block-properties">Collision Properties</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSphere.html">Collider Blocks</a>
|
||
• Boolean Port"""
|
||
},
|
||
{
|
||
"title": "Collision Advanced",
|
||
"prefabName": "Collision Advanced",
|
||
"description":
|
||
"""<ignore><link="CollisionAdvanced.vfx">Open VFX</link>
|
||
<link="VFXG Collision Advanced">Show VFX</link>
|
||
</ignore>
|
||
As VFX Graph is <b>simulating particles on the GPU</b>, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithAABox.html">Boxes</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSphere.html">Spheres</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html">Cones</a>, <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithPlane.html">Planes</a> or even complex shapes with the use of <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSignedDistanceField.html">SDF</a> and/or <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithDepthBuffer.html">Depth Buffer</a>. Sometimes using simple collision shapes isn’t enough to get a precise enough collision with the environment. In this case, using <b>SDF</b> can be a good solution to approximate complex geometry like this sculpture of a hand.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithCone.html#block-properties">Collision Properties</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-CollideWithSignedDistanceField.html">SDF Collider</a>"""
|
||
},
|
||
{
|
||
"title": "Trigger Event on Collide",
|
||
"prefabName": "Trigger Event on Collide",
|
||
"description":
|
||
"""<ignore><link="TriggerEventCollide.vfx">Open VFX</link>
|
||
<link="VFXG Trigger Event on Collide">Show VFX</link>
|
||
</ignore>
|
||
This VFX is displaying an advanced usage of the <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-TriggerEventOnDie.html">Trigger Event on Collide</a> block that allows us to spawn new particles when a particle collides. Dart particles are thrown at the dartboard. When they collide, they instantaneously die and trigger different <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-GPUEvent.html">GPU Events</a>. Those <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-GPUEvent.html">GPU Events</a> are used to spawn new particles, like the Springy darts or the UI Score particles, that all <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Attributes.html#source">inherit attributes</a> from their parent.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-TriggerEventOnDie.html">Trigger Event on Collide</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-GPUEvent.html">GPU Events</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Attributes.html#source">Source Attribute</a>"""
|
||
},
|
||
{
|
||
"title": "Decal Particles",
|
||
"prefabName": "Decal Particles",
|
||
"description":
|
||
"""<ignore><link="DecalParticles.vfx">Open VFX</link>
|
||
<link="VFXG Decal Particles">Show VFX</link>
|
||
</ignore>
|
||
<b>Decal</b> is powerful tool that can add a lot of visual complexity to an environment. We can use <b>decals</b> to project textures on the environment and even on dynamic objects or skinned meshes. Output Decals allow you to render particles as <b>decals</b> and to project its properties onto a surface using a Base Color map (albedo), a Normal Map, or a Mask Map. This example shows how to leverage the <b>Output Decal</b> to stick and project animated <b>decals</b> onto an animated skinned mesh renderer.
|
||
|
||
<i><b>Warning</b>: For this feature to work in URP, make sure to add an <b>Decal Renderer Feature</b> in your <b>URP Renderer Data</b> file.</i>
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-SetPosition(SkinnedMesh).html">Skinned Mesh Position</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputParticleHDRPLitDecal.html">Output Decals HDRP</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputParticleHDRPLitDecal.html">Output Decals URP</a>"""
|
||
},
|
||
{
|
||
"title": "Strip Properties",
|
||
"prefabName": "Strip Properties",
|
||
"description":
|
||
"""<ignore><link="StripProperties.vfx">Open VFX</link>
|
||
<link="VFXG Strip Properties">Show VFX</link>
|
||
</ignore>
|
||
You can use <b>Strips</b>, also known as <b>Ribbons</b> or <b>Trails</b>, to create a wide range of VFX. The <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Ouput Context</a> and Strip particle data allow you to draw a quad between each particle. This example demonstrates a straightforward Strip setup. It explains the various strip properties and attributes that control its visual appearance and behavior.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeParticleIndexInStrip.html">Particle Index in Strip</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeParticleCountInStrip.html">Particle Count in Strip</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>"""
|
||
},
|
||
{
|
||
"title": "Strip Spawn Rate",
|
||
"prefabName": "Strip SpawnRate",
|
||
"description":
|
||
"""<ignore><link="StripSpawnRate.vfx">Open VFX</link>
|
||
<link="VFXG Strip SpawnRate">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. This example shows you how to make a single trail out of a continuous spawn rate of particles.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Attributes.html#attribute-locations">Attribute Locations</a>"""
|
||
},
|
||
{
|
||
"title": "Multi-Strip SpawnRate",
|
||
"prefabName": "Multi-Strip SpawnRate",
|
||
"description":
|
||
"""<ignore><link="MultiStripsSpawnRate.vfx">Open VFX</link>
|
||
<link="VFXG MultiStrips SpawnRate">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. This example shows you how to make multiple <b>trails</b> out of a continuous spawn rate of particles
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>"""
|
||
},
|
||
{
|
||
"title": "Multi-Strip Single Burst",
|
||
"prefabName": "Multi-Strip Single Burst",
|
||
"description":
|
||
"""<ignore><link="MultiStripSingleBurst.vfx">Open VFX</link>
|
||
<link="VFXG MultiStrips SingleBurst">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. This example shows you how to make multiple <b>trails</b> with one single burst of particles.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>"""
|
||
},
|
||
{
|
||
"title": "Multi-Strip Periodic Burst",
|
||
"prefabName": "Multi-Strip Periodic Burst",
|
||
"description":
|
||
"""<ignore><link="MultiStripsPeriodicBurst.vfx">Open VFX</link>
|
||
<link="VFXG MultiStrips PeriodicBurst">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. This example shows you how to make a new <b>trail</b> for each periodic burst within a single system.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>"""
|
||
},
|
||
{
|
||
"title": "Strip GPU-Event",
|
||
"prefabName": "Strip GPU-Events",
|
||
"description":
|
||
"""<ignore><link="StripGPUEvent.vfx">Open VFX</link>
|
||
<link="VFXG Strip GPU-Events">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. Using GPU trigger events is often the most straightforward way of creating <b>strips</b>. This example shows an example of a growing mushroom's VFX, with the mushroom’s hat being particle meshes and the mushroom’s foot made with particle <b>strips</b>.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-TriggerEventRate.html">Trigger Event Rate</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-GPUEvent.html">GPU Events</a>"""
|
||
},
|
||
{
|
||
"title": "Multi-Strips GPU-Event",
|
||
"prefabName": "Multi-Strips GPU-Event",
|
||
"description":
|
||
"""<ignore><link="MultiStripGPUEvents.vfx">Open VFX</link>
|
||
<link="VFXG Multi-Strips GPU-Events">Show VFX</link>
|
||
</ignore>
|
||
There are several ways to spawn particles, and when dealing with <b>strips</b>, this can have some implications for how you need to set up your VFX. This example illustrates how to circumvent the usual limitation that only permits the creation of one strip per parent's particle when dealing with <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Block-TriggerEventRate.html">Trigger Events</a>. Each headphone jack is made of a particle mesh and spawns particles along its path.
|
||
|
||
<b>Covered Aspects</b>:
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Context-OutputShaderGraphStrip.html">Strip Output Context</a>
|
||
• <a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/index.html?subfolder=/manual/Operator-GetAttributeStripIndex.html">Strip Index</a>"""
|
||
}
|
||
]
|
||
}
|