You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
30 KiB
354 lines
30 KiB
{
|
|
"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>"""
|
|
}
|
|
]
|
|
}
|