您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
9194 行
574 KiB
9194 行
574 KiB
%YAML 1.1
|
|
%TAG !u! tag:unity3d.com,2011:
|
|
--- !u!114 &114340500867371532
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 1
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: d01270efd3285ea4a9d6c555cb0a8027, type: 3}
|
|
m_Name: VFXUI
|
|
m_EditorClassIdentifier:
|
|
groupInfos:
|
|
- title: Position on Camera Front
|
|
position:
|
|
serializedVersion: 2
|
|
x: -1190
|
|
y: -1401
|
|
width: 503
|
|
height: 321
|
|
contents:
|
|
- model: {fileID: 8926484042661614579}
|
|
id: 0
|
|
isStickyNote: 0
|
|
- model: {fileID: 8926484042661615108}
|
|
id: 0
|
|
isStickyNote: 0
|
|
- model: {fileID: 8926484042661615112}
|
|
id: 0
|
|
isStickyNote: 0
|
|
- title: Reticula Visibility
|
|
position:
|
|
serializedVersion: 2
|
|
x: -1081
|
|
y: -665
|
|
width: 457
|
|
height: 215
|
|
contents:
|
|
- model: {fileID: 8926484042661615828}
|
|
id: 0
|
|
isStickyNote: 0
|
|
- model: {fileID: 8926484042661615830}
|
|
id: 0
|
|
isStickyNote: 0
|
|
stickyNoteInfos: []
|
|
systemInfos: []
|
|
categories: []
|
|
uiBounds:
|
|
serializedVersion: 2
|
|
x: -1165
|
|
y: -1437
|
|
width: 1488
|
|
height: 1519
|
|
--- !u!114 &114350483966674976
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 1
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 7d4c867f6b72b714dbb5fd1780afe208, type: 3}
|
|
m_Name: HUD
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children:
|
|
- {fileID: 8926484042661614579}
|
|
- {fileID: 8926484042661614823}
|
|
- {fileID: 8926484042661615108}
|
|
- {fileID: 8926484042661615112}
|
|
- {fileID: 8926484042661615579}
|
|
- {fileID: 8926484042661615828}
|
|
- {fileID: 8926484042661615830}
|
|
- {fileID: 8926484042661615942}
|
|
- {fileID: 8926484042661615944}
|
|
- {fileID: 8926484042661615952}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_UIInfos: {fileID: 114340500867371532}
|
|
m_ParameterInfo:
|
|
- name: ARUI-Reticula
|
|
path: ARUI-Reticula
|
|
tooltip:
|
|
sheetType: m_Float
|
|
realType: Single
|
|
defaultValue:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0
|
|
min: -Infinity
|
|
max: Infinity
|
|
descendantCount: 0
|
|
- name: ARUI-Hover
|
|
path: ARUI-Hover
|
|
tooltip:
|
|
sheetType: m_Bool
|
|
realType: Boolean
|
|
defaultValue:
|
|
m_Type:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: False
|
|
min: -Infinity
|
|
max: Infinity
|
|
descendantCount: 0
|
|
m_GraphVersion: 4
|
|
m_saved: 1
|
|
m_SubgraphDependencies:
|
|
- {fileID: 8926484042661614526, guid: a012d7e2d1963b5439bccd6478791f75, type: 3}
|
|
- {fileID: 8926484042661614526, guid: b5da5f3c58215f3418e2f4836c7ac94f, type: 3}
|
|
m_CategoryPath:
|
|
--- !u!2058629511 &8926484042661614527
|
|
VisualEffectResource:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_Name: HUD
|
|
m_Graph: {fileID: 114350483966674976}
|
|
m_ShaderSources:
|
|
- compute: 1
|
|
name: '[Full Screen Scan Pass]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_PARTICLEID_CURRENT 1\n#define
|
|
VFX_USE_POSITION_CURRENT 1\n#define VFX_USE_LIFETIME_CURRENT 1\n#define VFX_USE_SEED_CURRENT
|
|
1\n#define VFX_USE_TEXINDEX_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT 1\n#define
|
|
VFX_USE_AGE_CURRENT 1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n uint particleId;\n float3 position;\n float lifetime;\n
|
|
uint seed;\n float texIndex;\n bool alive;\n float age;\n};\n\nstruct
|
|
SourceAttributes\n{\n};\n\n\n\r\n\r\n#define USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT
|
|
&& !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer attributeBuffer;\r\nByteAddressBuffer
|
|
sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
uint nbSpawned;\t\t\t\t\t// Numbers of particle spawned\r\n uint spawnIndex;\t\t\t\t//
|
|
Index of the first particle spawned\r\n uint dispatchWidth;\r\n#else\r\n
|
|
uint offsetInAdditionalOutput;\r\n\tuint nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if
|
|
USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListIn;\r\nByteAddressBuffer
|
|
deadListCount; // This is bad to use a SRV to fetch deadList count but Unity
|
|
API currently prevent from copying to CB\r\n#endif\r\n\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint>
|
|
eventList;\r\nByteAddressBuffer inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint>
|
|
stripDataBuffer;\r\n#endif\r\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
PositionSequential_913D42CB(uint particleId, inout float3 position, float3
|
|
computedPosition) /*shape:ThreeDimensional index:ParticleID writePosition:True
|
|
writeTargetPosition:False mode:Wrap */\n{\n position += computedPosition;\n
|
|
\n}\nvoid SetAttribute_C707D62A(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Add Source:Slot Random:Off channels:XYZ */\n{\n position +=
|
|
Position;\n}\nvoid SetAttribute_F01429A3(inout float lifetime, inout uint seed,
|
|
float A, float B) /*attribute:lifetime Composition:Overwrite Source:Slot Random:Uniform
|
|
channels:XYZ */\n{\n lifetime = lerp(A,B,RAND);\n}\nvoid SetAttribute_CA100327(inout
|
|
float texIndex, inout uint seed, float A, float B) /*attribute:texIndex Composition:Overwrite
|
|
Source:Slot Random:Uniform channels:XYZ */\n{\n texIndex = lerp(A,B,RAND);\n}\n\n\r\n\r\n#if
|
|
HAS_STRIPS\r\nbool GetParticleIndex(inout uint particleIndex, uint stripIndex)\r\n{\r\n\tuint
|
|
relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT) // strip
|
|
is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
-1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.particleId = (uint)0;\n attributes.position = float3(0, 0,
|
|
0);\n attributes.lifetime = (float)1;\n attributes.seed = (uint)0;\n
|
|
attributes.texIndex = (float)0;\n attributes.alive = (bool)true;\n
|
|
attributes.age = (float)0;\n \n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n
|
|
attributes.particleId = particleIndex;\r\n#endif\r\n#if VFX_USE_SEED_CURRENT\r\n
|
|
attributes.seed = WangHash(particleIndex ^ systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n
|
|
attributes.spawnIndex = id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n uint tmp_y = attributes.particleId
|
|
/ (uint)1024;\n uint tmp_z = tmp_y * (uint)1024;\n uint
|
|
tmp_ba = attributes.particleId - tmp_z;\n uint tmp_bc = tmp_ba /
|
|
(uint)32;\n float tmp_bd = (float)tmp_bc;\n uint tmp_be
|
|
= tmp_bc * (uint)32;\n uint tmp_bf = tmp_ba - tmp_be;\n
|
|
float tmp_bg = (float)tmp_bf;\n uint tmp_bh = tmp_ba - tmp_ba;\n
|
|
float tmp_bi = (float)tmp_bh;\n float3 tmp_bj = float3(tmp_bd, tmp_bg,
|
|
tmp_bi);\n float3 tmp_bl = tmp_bj / float3(31, 31, 1);\n
|
|
float3 tmp_bn = tmp_bl * float3(2, 2, 2);\n float3 tmp_bp = tmp_bn
|
|
- float3(1, 1, 1);\n float tmp_bq = tmp_bp[0];\n float3
|
|
tmp_br = float3(tmp_bq, tmp_bq, tmp_bq);\n float3 tmp_bt = tmp_br
|
|
* float3(0, -0.200000003, 0);\n float3 tmp_bu = float3(0, 0, 0.0300099999)
|
|
+ tmp_bt;\n float tmp_bv = tmp_bp[1];\n float3 tmp_bw
|
|
= float3(tmp_bv, tmp_bv, tmp_bv);\n float3 tmp_by = tmp_bw * float3(0.300000012,
|
|
0, 0);\n float3 tmp_bz = tmp_bu + tmp_by;\n PositionSequential_913D42CB(attributes.particleId,
|
|
/*inout */attributes.position, tmp_bz);\n }\n {\n
|
|
SetAttribute_C707D62A( /*inout */attributes.position, float3(0, 0, 0.300000012));\n
|
|
}\n {\n SetAttribute_F01429A3( /*inout */attributes.lifetime,
|
|
/*inout */attributes.seed, (float)0.00999999978, (float)0.300000012);\n
|
|
}\n {\n SetAttribute_CA100327( /*inout */attributes.texIndex,
|
|
/*inout */attributes.seed, (float)0, (float)256);\n }\n \n\r\n\t\t\r\n#if
|
|
VFX_USE_ALIVE_CURRENT\r\n if (attributes.alive)\r\n#endif \r\n
|
|
{\r\n#if USE_DEAD_LIST\r\n\t uint deadIndex = deadListIn.DecrementCounter();\r\n
|
|
uint index = deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x4 + 0x0) << 2,asuint(attributes.position));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x1000) << 2,asuint(attributes.lifetime));\n
|
|
attributeBuffer.Store((index * 0x4 + 0x3) << 2,asuint(attributes.texIndex));\n
|
|
attributeBuffer.Store((index * 0x2 + 0x1400) << 2,uint(attributes.alive));\n
|
|
attributeBuffer.Store((index * 0x2 + 0x1401) << 2,asuint(attributes.age));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Full Screen Scan Pass]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_LIFETIME_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT
|
|
1\n#define VFX_USE_AGE_CURRENT 1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float deltaTime_a;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float lifetime;\n bool alive;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
Age(inout float age, float deltaTime)\n{\n age += deltaTime;\n}\nvoid Reap(float
|
|
age, float lifetime, inout bool alive)\n{\n if(age > lifetime) { alive =
|
|
false; }\n}\n\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif (id < nbMax)\r\n\t{\r\n
|
|
Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\t\n\r\n\t\tif (attributes.alive)\r\n\t\t{\r\n\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\t\n\r\n\r\n//
|
|
Initialize built-in needed attributes\r\n#if VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition
|
|
= attributes.position;\r\n#endif\r\n#if HAS_STRIPS\r\n const StripData
|
|
stripData = GetStripDataFromParticleIndex(index, PARTICLE_PER_STRIP_COUNT);\r\n
|
|
InitStripAttributes(index, attributes, stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\tAge(
|
|
/*inout */attributes.age, deltaTime_a);\n\t\t\tReap(attributes.age, attributes.lifetime,
|
|
/*inout */attributes.alive);\n\t\t\t\n\r\n\r\n\t\t\tif (attributes.alive)\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x1401) << 2,asuint(attributes.age));\n\t\t\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x1400) << 2,uint(attributes.alive));\n\t\t\t\t\n\r\n#if USE_DEAD_LIST
|
|
&& !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\tAge( /*inout */attributes.age, deltaTime_a);\n\t\tReap(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.alive);\n\t\t\n\r\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x1400) << 2,uint(attributes.alive));\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x1401) << 2,asuint(attributes.age));\n\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Full Screen Scan Pass]Output Particle Quad'
|
|
source: "Shader \"Hidden/VFX/HUD_Initialize/Full Screen Scan Pass/Output Particle
|
|
Quad\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tCull Off\r\n\t\t\r\n\t\tTags { \"Queue\"=\"Transparent+700\"
|
|
\"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha One , Zero One\n\t\tZTest LEqual\n\t\tZWrite Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define
|
|
NB_THREADS_PER_GROUP 64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL
|
|
(0)\n\t\t#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION
|
|
(2)\n\t\t#define VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_LIFETIME_CURRENT
|
|
1\n\t\t#define VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT
|
|
1\n\t\t#define VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define
|
|
VFX_USE_AXISX_CURRENT 1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT
|
|
1\n\t\t#define VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEY_CURRENT 1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_AGE_CURRENT 1\n\t\t#define VFX_COLORMAPPING_DEFAULT 1\n\t\t#define
|
|
IS_TRANSPARENT_PARTICLE 1\n\t\t#define VFX_BLENDMODE_ADD 1\n\t\t#define USE_FLIPBOOK
|
|
1\n\t\t#define VFX_BYPASS_EXPOSURE 1\n\t\t#define VFX_PRIMITIVE_QUAD 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float gradient_c;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float lifetime;\n\t\t
|
|
float texIndex;\n\t\t float3 color;\n\t\t float alpha;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float angleZ;\n\t\t float
|
|
pivotX;\n\t\t float pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t
|
|
float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t float
|
|
age;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D
|
|
mainTexture;\n\t\tSamplerState samplermainTexture;\n\t\tfloat4 mainTexture_TexelSize;\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION
|
|
|| VFX_USE_ALPHA_CURRENT\n\t\t\t\t// x: alpha threshold\n\t\t\t\t// y: frame
|
|
blending factor\n\t\t\t\t// z: alpha\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3
|
|
builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4 cPosPrevious :
|
|
TEXCOORD3;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t #if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t float3 posWS : TEXCOORD5;\n\t\t\t
|
|
#endif\n\t\t\t \n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t#define VFX_VARYING_POSWS
|
|
posWS\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define SHADERPASS
|
|
SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS
|
|
and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B229(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
ColorOverLife_733E3(float age, float lifetime, inout float3 color, inout float
|
|
alpha, float gradient) /*mode:ColorAndAlpha ColorComposition:Multiply AlphaComposition:Multiply
|
|
*/\n\t\t\t{\n\t\t\t \n\t\t\t float4 sampledColor = SampleGradient(gradient,
|
|
age/lifetime);\n\t\t\t color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t
|
|
\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error
|
|
VFX_PRIMITIVE_QUAD must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x1400) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.0179999992);\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_c);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(16, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2
|
|
invFlipBookSize = (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t
|
|
invFlipBookSize = float2(0.0625, 0.0625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t
|
|
#ifdef VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
\n\t\t\t float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t float
|
|
alpha = VFXGetFragmentColor(i).a;\n\t\t\t alpha *= VFXGetTextureColor(VFX_SAMPLER(mainTexture),i).a;\n\t\t\t
|
|
#endif\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#if VFX_PASSDEPTH
|
|
== VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2 velocity =
|
|
(i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) - (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\treturn encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\treturn
|
|
(float4)0;\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos :
|
|
SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_FLIPBOOK_INTERPOLATION || USE_EXPOSURE_WEIGHT || WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t//
|
|
x: inverse soft particles fade distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t//
|
|
z: frame blending factor\n\t\t\t\t// w: exposure weight\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD3;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD4;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t\t\tfloat3 normal : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t\t\tfloat3 tangent : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t
|
|
\n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
outMotionVector : SV_Target1;\n\t\t#endif\n\t\t\t};\n\t\t\n\t\t#define VFX_VARYING_PS_INPUTS
|
|
ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define VFX_VARYING_COLOR
|
|
color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t#define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t#define VFX_VARYING_UV uv\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.w\n\t\t#endif\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t#endif\n\t\t\n\t\t#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t\n\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t#define VFX_VARYING_NORMAL normal\n\t\t#endif\n\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t#define VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B229(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
ColorOverLife_733E3(float age, float lifetime, inout float3 color, inout float
|
|
alpha, float gradient) /*mode:ColorAndAlpha ColorComposition:Multiply AlphaComposition:Multiply
|
|
*/\n\t\t\t{\n\t\t\t \n\t\t\t float4 sampledColor = SampleGradient(gradient,
|
|
age/lifetime);\n\t\t\t color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t
|
|
\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error
|
|
VFX_PRIMITIVE_QUAD must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x1400) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.0179999992);\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_c);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(16, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2
|
|
invFlipBookSize = (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t
|
|
invFlipBookSize = float2(0.0625, 0.0625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t\t\n\t\t#endif\n\t\t\t\t\n\t\t\t#pragma fragment frag\n\t\t\tps_output
|
|
frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = i.VFX_VARYING_NORMAL * faceMul;\n\t\t\t\t\t\t\tconst VFXUVData uvData
|
|
= GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = i.VFX_VARYING_TANGENT;\n\t\t\t\t\t\t\tfloat3 bitangentWS = cross(i.VFX_VARYING_TANGENT,i.VFX_VARYING_NORMAL);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_BENTFACTORS) && USE_NORMAL_BENDING\t\n\t\t\t\t\t\t\tfloat3
|
|
bentFactors = float3(i.VFX_VARYING_BENTFACTORS.xy,sqrt(1.0f - dot(i.VFX_VARYING_BENTFACTORS,i.VFX_VARYING_BENTFACTORS)));\n\t\t\t\t\t\t\tnormalWS
|
|
= tangentWS * bentFactors.x + bitangentWS * bentFactors.y + normalWS * bentFactors.z;\n\t\t\t\t\t\t\ttangentWS
|
|
= normalize(cross(normalWS,bitangentWS));\n\t\t\t\t\t\t\tbitangentWS = cross(tangentWS,normalWS);\n\t\t\t\t\t\t\ttangentWS
|
|
*= faceMul;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3x3 tbn
|
|
= float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t \n\t\t \n\t\t \n\t\t \n\t\t
|
|
#if HAS_SHADERGRAPH_PARAM_COLOR\n\t\t o.color.rgb = OUTSG..rgb;\n\t\t
|
|
#endif\n\t\t \n\t\t #if HAS_SHADERGRAPH_PARAM_ALPHA \n\t\t
|
|
o.color.a = OUTSG.;\n\t\t #endif\n\t\t#else\n\t\t\t\n\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR VFXGetTextureColor(VFX_SAMPLER(mainTexture),i)\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\to.color
|
|
= VFXApplyPreExposure(o.color, i);\n\t\t#endif\n\t\t\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t\t\to.color = VFXTransformFinalColor(o.color);\n\t\t\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t\n\t\t\t\t\t\tfloat2 velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w)
|
|
- (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\tVFXEncodeMotionVector(velocity * 0.5f,
|
|
encodedMotionVector);\n\t\t\t\t\t\t\n\t\t\t\to.outMotionVector = encodedMotionVector;\n\t\t
|
|
o.outMotionVector.a = o.color.a < i.VFX_VARYING_ALPHATHRESHOLD ? 0.0f : 1.0f;
|
|
//Independant clipping for motion vector pass\n\t\t#endif\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Background Random Code Lines]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_USE_LIFETIME_CURRENT
|
|
1\n#define VFX_USE_SEED_CURRENT 1\n#define VFX_USE_TEXINDEX_CURRENT 1\n#define
|
|
VFX_USE_PARTICLEID_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT 1\n#define VFX_USE_AGE_CURRENT
|
|
1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float uniform_b;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float3 position;\n float lifetime;\n uint seed;\n float texIndex;\n
|
|
uint particleId;\n bool alive;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\nByteAddressBuffer sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n uint nbSpawned;\t\t\t\t\t// Numbers of particle
|
|
spawned\r\n uint spawnIndex;\t\t\t\t// Index of the first particle spawned\r\n
|
|
uint dispatchWidth;\r\n#else\r\n uint offsetInAdditionalOutput;\r\n\tuint
|
|
nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint>
|
|
deadListIn;\r\nByteAddressBuffer deadListCount; // This is bad to use a SRV
|
|
to fetch deadList count but Unity API currently prevent from copying to CB\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint> eventList;\r\nByteAddressBuffer
|
|
inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_CAC29747(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n position
|
|
= Position;\n}\nvoid SetAttribute_C707D62A(inout float3 position, float3 Position)
|
|
/*attribute:position Composition:Add Source:Slot Random:Off channels:XYZ */\n{\n
|
|
position += Position;\n}\nvoid SetAttribute_F01429A3(inout float lifetime,
|
|
inout uint seed, float A, float B) /*attribute:lifetime Composition:Overwrite
|
|
Source:Slot Random:Uniform channels:XYZ */\n{\n lifetime = lerp(A,B,RAND);\n}\nvoid
|
|
SetAttribute_CA10063D(inout float texIndex, float TexIndex) /*attribute:texIndex
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n texIndex
|
|
= TexIndex;\n}\n\n\r\n\r\n#if HAS_STRIPS\r\nbool GetParticleIndex(inout uint
|
|
particleIndex, uint stripIndex)\r\n{\r\n\tuint relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), 1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT)
|
|
// strip is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), -1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.position = float3(0, 0, 0);\n attributes.lifetime = (float)1;\n
|
|
attributes.seed = (uint)0;\n attributes.texIndex = (float)0;\n
|
|
attributes.particleId = (uint)0;\n attributes.alive = (bool)true;\n
|
|
attributes.age = (float)0;\n \n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n
|
|
attributes.particleId = particleIndex;\r\n#endif\r\n#if VFX_USE_SEED_CURRENT\r\n
|
|
attributes.seed = WangHash(particleIndex ^ systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n
|
|
attributes.spawnIndex = id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n uint tmp_z = attributes.particleId
|
|
/ (uint)64;\n uint tmp_ba = tmp_z * (uint)64;\n uint
|
|
tmp_bb = attributes.particleId - tmp_ba;\n float tmp_bc = (float)tmp_bb;\n
|
|
float tmp_be = tmp_bc / (float)63;\n float3 tmp_bf = float3(tmp_be,
|
|
tmp_be, tmp_be);\n float3 tmp_bh = tmp_bf * float3(0, -0.300000012,
|
|
0);\n float3 tmp_bi = float3(-0.25999999, 0.150000006, 0) + tmp_bh;\n
|
|
float tmp_bj = tmp_bi[0];\n float tmp_bk = tmp_bi[1];\n
|
|
float3 tmp_bm = float3(tmp_bj, tmp_bk, (float)0.0300099999);\n SetAttribute_CAC29747(
|
|
/*inout */attributes.position, tmp_bm);\n }\n {\n
|
|
SetAttribute_C707D62A( /*inout */attributes.position, float3(0, 0, 0.200000003));\n
|
|
}\n {\n SetAttribute_F01429A3( /*inout */attributes.lifetime,
|
|
/*inout */attributes.seed, (float)1, (float)5);\n }\n {\n
|
|
uint tmp_x = attributes.particleId ^ asuint(uniform_b);\n float
|
|
tmp_y = FixedRand(tmp_x);\n float tmp_ba = tmp_y * (float)64;\n
|
|
SetAttribute_CA10063D( /*inout */attributes.texIndex, tmp_ba);\n }\n
|
|
\n\r\n\t\t\r\n#if VFX_USE_ALIVE_CURRENT\r\n if (attributes.alive)\r\n#endif
|
|
\r\n {\r\n#if USE_DEAD_LIST\r\n\t uint deadIndex = deadListIn.DecrementCounter();\r\n
|
|
uint index = deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x4 + 0x0) << 2,asuint(attributes.position));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x100) << 2,asuint(attributes.lifetime));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x140) << 2,asuint(attributes.texIndex));\n
|
|
attributeBuffer.Store((index * 0x2 + 0x180) << 2,uint(attributes.alive));\n
|
|
attributeBuffer.Store((index * 0x2 + 0x181) << 2,asuint(attributes.age));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Background Random Code Lines]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_LIFETIME_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT
|
|
1\n#define VFX_USE_AGE_CURRENT 1\n#define VFX_HAS_INDIRECT_DRAW 1\n#define
|
|
VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float deltaTime_a;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float lifetime;\n bool alive;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
Age(inout float age, float deltaTime)\n{\n age += deltaTime;\n}\nvoid Reap(float
|
|
age, float lifetime, inout bool alive)\n{\n if(age > lifetime) { alive =
|
|
false; }\n}\n\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif (id < nbMax)\r\n\t{\r\n
|
|
Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x180) << 2));\n\t\t\n\r\n\t\tif (attributes.alive)\r\n\t\t{\r\n\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x100) << 2));\n\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x181) << 2));\n\t\t\t\n\r\n\r\n//
|
|
Initialize built-in needed attributes\r\n#if VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition
|
|
= attributes.position;\r\n#endif\r\n#if HAS_STRIPS\r\n const StripData
|
|
stripData = GetStripDataFromParticleIndex(index, PARTICLE_PER_STRIP_COUNT);\r\n
|
|
InitStripAttributes(index, attributes, stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\tAge(
|
|
/*inout */attributes.age, deltaTime_a);\n\t\t\tReap(attributes.age, attributes.lifetime,
|
|
/*inout */attributes.alive);\n\t\t\t\n\r\n\r\n\t\t\tif (attributes.alive)\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x181) << 2,asuint(attributes.age));\n\t\t\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x180) << 2,uint(attributes.alive));\n\t\t\t\t\n\r\n#if USE_DEAD_LIST
|
|
&& !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x100) << 2));\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x180) << 2));\n\t\tattributes.age =
|
|
asfloat(attributeBuffer.Load((index * 0x2 + 0x181) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\tAge( /*inout */attributes.age, deltaTime_a);\n\t\tReap(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.alive);\n\t\t\n\r\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x180) << 2,uint(attributes.alive));\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0x181) << 2,asuint(attributes.age));\n\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Background Random Code Lines]Output Particle Quad'
|
|
source: "Shader \"Hidden/VFX/HUD_Initialize/Background Random Code Lines/Output
|
|
Particle Quad\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tCull Off\r\n\t\t\r\n\t\tTags
|
|
{ \"Queue\"=\"Transparent+700\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"
|
|
}\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha OneMinusSrcAlpha , Zero OneMinusSrcAlpha\n\t\tZTest LEqual\n\t\tZWrite
|
|
Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define NB_THREADS_PER_GROUP
|
|
64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL (0)\n\t\t#define
|
|
VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION (2)\n\t\t#define
|
|
VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_LIFETIME_CURRENT 1\n\t\t#define
|
|
VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define
|
|
VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define VFX_USE_AXISX_CURRENT
|
|
1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT 1\n\t\t#define
|
|
VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT 1\n\t\t#define
|
|
VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT
|
|
1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_USE_AGE_CURRENT 1\n\t\t#define
|
|
VFX_COLORMAPPING_DEFAULT 1\n\t\t#define IS_TRANSPARENT_PARTICLE 1\n\t\t#define
|
|
VFX_BLENDMODE_ALPHA 1\n\t\t#define VFX_HAS_INDIRECT_DRAW 1\n\t\t#define USE_FLIPBOOK
|
|
1\n\t\t#define VFX_BYPASS_EXPOSURE 1\n\t\t#define USE_DEAD_LIST_COUNT 1\n\t\t#define
|
|
VFX_PRIMITIVE_QUAD 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float gradient_e;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float lifetime;\n\t\t
|
|
float texIndex;\n\t\t float3 color;\n\t\t float alpha;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float angleZ;\n\t\t float
|
|
pivotX;\n\t\t float pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t
|
|
float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t float
|
|
age;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D
|
|
mainTexture;\n\t\tSamplerState samplermainTexture;\n\t\tfloat4 mainTexture_TexelSize;\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION
|
|
|| VFX_USE_ALPHA_CURRENT\n\t\t\t\t// x: alpha threshold\n\t\t\t\t// y: frame
|
|
blending factor\n\t\t\t\t// z: alpha\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3
|
|
builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4 cPosPrevious :
|
|
TEXCOORD3;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t #if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t float3 posWS : TEXCOORD5;\n\t\t\t
|
|
#endif\n\t\t\t \n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t#define VFX_VARYING_POSWS
|
|
posWS\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define SHADERPASS
|
|
SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS
|
|
and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B22F(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151647(inout float scaleX, inout float scaleY, float2 Scale)
|
|
/*attribute:scale Composition:Overwrite Source:Slot Random:Off channels:XY
|
|
*/\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid ColorOverLife_733E3(float age, float
|
|
lifetime, inout float3 color, inout float alpha, float gradient) /*mode:ColorAndAlpha
|
|
ColorComposition:Multiply AlphaComposition:Multiply */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float4 sampledColor = SampleGradient(gradient, age/lifetime);\n\t\t\t
|
|
color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t \n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if
|
|
defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error VFX_PRIMITIVE_QUAD
|
|
must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x100) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x140) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x180) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x181) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x180) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x100) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x140) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x181) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B22F( /*inout */attributes.size, (float)1);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151647( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
float2(0.200000003, 0.00999999978));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t SetAttribute_65DEC940(
|
|
/*inout */attributes.pivotX, /*inout */attributes.pivotY, /*inout */attributes.pivotZ,
|
|
float3(-0.5, 0, 0));\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_e);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(1, 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(1, 0.03125);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t
|
|
#ifdef VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
\n\t\t\t float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t float
|
|
alpha = VFXGetFragmentColor(i).a;\n\t\t\t alpha *= VFXGetTextureColor(VFX_SAMPLER(mainTexture),i).a;\n\t\t\t
|
|
#endif\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#if VFX_PASSDEPTH
|
|
== VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2 velocity =
|
|
(i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) - (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\treturn encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\treturn
|
|
(float4)0;\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos :
|
|
SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_FLIPBOOK_INTERPOLATION || USE_EXPOSURE_WEIGHT || WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t//
|
|
x: inverse soft particles fade distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t//
|
|
z: frame blending factor\n\t\t\t\t// w: exposure weight\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD3;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD4;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t\t\tfloat3 normal : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t\t\tfloat3 tangent : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t
|
|
\n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
outMotionVector : SV_Target1;\n\t\t#endif\n\t\t\t};\n\t\t\n\t\t#define VFX_VARYING_PS_INPUTS
|
|
ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define VFX_VARYING_COLOR
|
|
color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t#define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t#define VFX_VARYING_UV uv\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.w\n\t\t#endif\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t#endif\n\t\t\n\t\t#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t\n\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t#define VFX_VARYING_NORMAL normal\n\t\t#endif\n\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t#define VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B22F(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151647(inout float scaleX, inout float scaleY, float2 Scale)
|
|
/*attribute:scale Composition:Overwrite Source:Slot Random:Off channels:XY
|
|
*/\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid ColorOverLife_733E3(float age, float
|
|
lifetime, inout float3 color, inout float alpha, float gradient) /*mode:ColorAndAlpha
|
|
ColorComposition:Multiply AlphaComposition:Multiply */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float4 sampledColor = SampleGradient(gradient, age/lifetime);\n\t\t\t
|
|
color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t \n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if
|
|
defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error VFX_PRIMITIVE_QUAD
|
|
must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x100) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x140) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x180) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x181) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x180) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x100) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x140) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x181) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B22F( /*inout */attributes.size, (float)1);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151647( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
float2(0.200000003, 0.00999999978));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t SetAttribute_65DEC940(
|
|
/*inout */attributes.pivotX, /*inout */attributes.pivotY, /*inout */attributes.pivotZ,
|
|
float3(-0.5, 0, 0));\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_e);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(1, 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(1, 0.03125);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t\t\n\t\t#endif\n\t\t\t\t\n\t\t\t#pragma fragment frag\n\t\t\tps_output
|
|
frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = i.VFX_VARYING_NORMAL * faceMul;\n\t\t\t\t\t\t\tconst VFXUVData uvData
|
|
= GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = i.VFX_VARYING_TANGENT;\n\t\t\t\t\t\t\tfloat3 bitangentWS = cross(i.VFX_VARYING_TANGENT,i.VFX_VARYING_NORMAL);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_BENTFACTORS) && USE_NORMAL_BENDING\t\n\t\t\t\t\t\t\tfloat3
|
|
bentFactors = float3(i.VFX_VARYING_BENTFACTORS.xy,sqrt(1.0f - dot(i.VFX_VARYING_BENTFACTORS,i.VFX_VARYING_BENTFACTORS)));\n\t\t\t\t\t\t\tnormalWS
|
|
= tangentWS * bentFactors.x + bitangentWS * bentFactors.y + normalWS * bentFactors.z;\n\t\t\t\t\t\t\ttangentWS
|
|
= normalize(cross(normalWS,bitangentWS));\n\t\t\t\t\t\t\tbitangentWS = cross(tangentWS,normalWS);\n\t\t\t\t\t\t\ttangentWS
|
|
*= faceMul;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3x3 tbn
|
|
= float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t \n\t\t \n\t\t \n\t\t \n\t\t
|
|
#if HAS_SHADERGRAPH_PARAM_COLOR\n\t\t o.color.rgb = OUTSG..rgb;\n\t\t
|
|
#endif\n\t\t \n\t\t #if HAS_SHADERGRAPH_PARAM_ALPHA \n\t\t
|
|
o.color.a = OUTSG.;\n\t\t #endif\n\t\t#else\n\t\t\t\n\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR VFXGetTextureColor(VFX_SAMPLER(mainTexture),i)\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\to.color
|
|
= VFXApplyPreExposure(o.color, i);\n\t\t#endif\n\t\t\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t\t\to.color = VFXTransformFinalColor(o.color);\n\t\t\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t\n\t\t\t\t\t\tfloat2 velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w)
|
|
- (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\tVFXEncodeMotionVector(velocity * 0.5f,
|
|
encodedMotionVector);\n\t\t\t\t\t\t\n\t\t\t\to.outMotionVector = encodedMotionVector;\n\t\t
|
|
o.outMotionVector.a = o.color.a < i.VFX_VARYING_ALPHATHRESHOLD ? 0.0f : 1.0f;
|
|
//Independant clipping for motion vector pass\n\t\t#endif\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Boot Text]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_USE_LIFETIME_CURRENT
|
|
1\n#define VFX_USE_SEED_CURRENT 1\n#define VFX_USE_TEXINDEX_CURRENT 1\n#define
|
|
VFX_USE_PARTICLEID_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT 1\n#define VFX_USE_AGE_CURRENT
|
|
1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n float3 position;\n float lifetime;\n uint seed;\n
|
|
float texIndex;\n uint particleId;\n bool alive;\n float age;\n};\n\nstruct
|
|
SourceAttributes\n{\n};\n\n\n\r\n\r\n#define USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT
|
|
&& !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer attributeBuffer;\r\nByteAddressBuffer
|
|
sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
uint nbSpawned;\t\t\t\t\t// Numbers of particle spawned\r\n uint spawnIndex;\t\t\t\t//
|
|
Index of the first particle spawned\r\n uint dispatchWidth;\r\n#else\r\n
|
|
uint offsetInAdditionalOutput;\r\n\tuint nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if
|
|
USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListIn;\r\nByteAddressBuffer
|
|
deadListCount; // This is bad to use a SRV to fetch deadList count but Unity
|
|
API currently prevent from copying to CB\r\n#endif\r\n\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint>
|
|
eventList;\r\nByteAddressBuffer inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint>
|
|
stripDataBuffer;\r\n#endif\r\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_CAC29747(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n position
|
|
= Position;\n}\nvoid SetAttribute_F01429A3(inout float lifetime, inout uint
|
|
seed, float A, float B) /*attribute:lifetime Composition:Overwrite Source:Slot
|
|
Random:Uniform channels:XYZ */\n{\n lifetime = lerp(A,B,RAND);\n}\nvoid
|
|
SetAttribute_CA10063D(inout float texIndex, float TexIndex) /*attribute:texIndex
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n texIndex
|
|
= TexIndex;\n}\n\n\r\n\r\n#if HAS_STRIPS\r\nbool GetParticleIndex(inout uint
|
|
particleIndex, uint stripIndex)\r\n{\r\n\tuint relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), 1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT)
|
|
// strip is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), -1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.position = float3(0, 0, 0);\n attributes.lifetime = (float)1;\n
|
|
attributes.seed = (uint)0;\n attributes.texIndex = (float)0;\n
|
|
attributes.particleId = (uint)0;\n attributes.alive = (bool)true;\n
|
|
attributes.age = (float)0;\n \n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n
|
|
attributes.particleId = particleIndex;\r\n#endif\r\n#if VFX_USE_SEED_CURRENT\r\n
|
|
attributes.seed = WangHash(particleIndex ^ systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n
|
|
attributes.spawnIndex = id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n uint tmp_y = attributes.particleId
|
|
/ (uint)32;\n uint tmp_z = tmp_y * (uint)32;\n uint tmp_ba
|
|
= attributes.particleId - tmp_z;\n float tmp_bb = (float)tmp_ba;\n
|
|
float tmp_bd = tmp_bb / (float)31;\n float3 tmp_be = float3(tmp_bd,
|
|
tmp_bd, tmp_bd);\n float3 tmp_bg = tmp_be * float3(0, -0.239999995,
|
|
0);\n float3 tmp_bh = float3(-0.280000001, 0.119999997, 0) + tmp_bg;\n
|
|
float tmp_bi = tmp_bh[0];\n float tmp_bj = tmp_bh[1];\n
|
|
float3 tmp_bl = float3(tmp_bi, tmp_bj, (float)0.330000013);\n SetAttribute_CAC29747(
|
|
/*inout */attributes.position, tmp_bl);\n }\n {\n
|
|
SetAttribute_F01429A3( /*inout */attributes.lifetime, /*inout */attributes.seed,
|
|
(float)4, (float)4);\n }\n {\n float tmp_w = (float)attributes.particleId;\n
|
|
SetAttribute_CA10063D( /*inout */attributes.texIndex, tmp_w);\n }\n
|
|
\n\r\n\t\t\r\n#if VFX_USE_ALIVE_CURRENT\r\n if (attributes.alive)\r\n#endif
|
|
\r\n {\r\n#if USE_DEAD_LIST\r\n\t uint deadIndex = deadListIn.DecrementCounter();\r\n
|
|
uint index = deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x4 + 0x0) << 2,asuint(attributes.position));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x80) << 2,asuint(attributes.lifetime));\n
|
|
attributeBuffer.Store((index * 0x1 + 0xA0) << 2,asuint(attributes.texIndex));\n
|
|
attributeBuffer.Store((index * 0x2 + 0xC0) << 2,uint(attributes.alive));\n
|
|
attributeBuffer.Store((index * 0x2 + 0xC1) << 2,asuint(attributes.age));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Boot Text]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_LIFETIME_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT
|
|
1\n#define VFX_USE_AGE_CURRENT 1\n#define VFX_HAS_INDIRECT_DRAW 1\n#define
|
|
VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float deltaTime_a;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float lifetime;\n bool alive;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
Age(inout float age, float deltaTime)\n{\n age += deltaTime;\n}\nvoid Reap(float
|
|
age, float lifetime, inout bool alive)\n{\n if(age > lifetime) { alive =
|
|
false; }\n}\n\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif (id < nbMax)\r\n\t{\r\n
|
|
Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0xC0) << 2));\n\t\t\n\r\n\t\tif (attributes.alive)\r\n\t\t{\r\n\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x80) << 2));\n\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0xC1) << 2));\n\t\t\t\n\r\n\r\n//
|
|
Initialize built-in needed attributes\r\n#if VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition
|
|
= attributes.position;\r\n#endif\r\n#if HAS_STRIPS\r\n const StripData
|
|
stripData = GetStripDataFromParticleIndex(index, PARTICLE_PER_STRIP_COUNT);\r\n
|
|
InitStripAttributes(index, attributes, stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\tAge(
|
|
/*inout */attributes.age, deltaTime_a);\n\t\t\tReap(attributes.age, attributes.lifetime,
|
|
/*inout */attributes.alive);\n\t\t\t\n\r\n\r\n\t\t\tif (attributes.alive)\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0xC1) << 2,asuint(attributes.age));\n\t\t\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0xC0) << 2,uint(attributes.alive));\n\t\t\t\t\n\r\n#if USE_DEAD_LIST
|
|
&& !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x80) << 2));\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0xC0) << 2));\n\t\tattributes.age =
|
|
asfloat(attributeBuffer.Load((index * 0x2 + 0xC1) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\tAge( /*inout */attributes.age, deltaTime_a);\n\t\tReap(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.alive);\n\t\t\n\r\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0xC0) << 2,uint(attributes.alive));\n\t\tattributeBuffer.Store((index
|
|
* 0x2 + 0xC1) << 2,asuint(attributes.age));\n\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Boot Text]Output Particle Quad'
|
|
source: "Shader \"Hidden/VFX/HUD_Initialize/Boot Text/Output Particle Quad\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tCull
|
|
Off\r\n\t\t\r\n\t\tTags { \"Queue\"=\"Transparent+700\" \"IgnoreProjector\"=\"True\"
|
|
\"RenderType\"=\"Transparent\" }\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha OneMinusSrcAlpha , Zero OneMinusSrcAlpha\n\t\tZTest LEqual\n\t\tZWrite
|
|
Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define NB_THREADS_PER_GROUP
|
|
64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL (0)\n\t\t#define
|
|
VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION (2)\n\t\t#define
|
|
VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_LIFETIME_CURRENT 1\n\t\t#define
|
|
VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define
|
|
VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define VFX_USE_AXISX_CURRENT
|
|
1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT 1\n\t\t#define
|
|
VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT 1\n\t\t#define
|
|
VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT
|
|
1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_USE_AGE_CURRENT 1\n\t\t#define
|
|
VFX_COLORMAPPING_DEFAULT 1\n\t\t#define IS_TRANSPARENT_PARTICLE 1\n\t\t#define
|
|
VFX_BLENDMODE_ALPHA 1\n\t\t#define VFX_HAS_INDIRECT_DRAW 1\n\t\t#define USE_FLIPBOOK
|
|
1\n\t\t#define VFX_BYPASS_EXPOSURE 1\n\t\t#define USE_DEAD_LIST_COUNT 1\n\t\t#define
|
|
VFX_PRIMITIVE_QUAD 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float gradient_d;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float lifetime;\n\t\t
|
|
float texIndex;\n\t\t float3 color;\n\t\t float alpha;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float angleZ;\n\t\t float
|
|
pivotX;\n\t\t float pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t
|
|
float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t float
|
|
age;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D
|
|
mainTexture;\n\t\tSamplerState samplermainTexture;\n\t\tfloat4 mainTexture_TexelSize;\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION
|
|
|| VFX_USE_ALPHA_CURRENT\n\t\t\t\t// x: alpha threshold\n\t\t\t\t// y: frame
|
|
blending factor\n\t\t\t\t// z: alpha\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3
|
|
builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4 cPosPrevious :
|
|
TEXCOORD3;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t #if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t float3 posWS : TEXCOORD5;\n\t\t\t
|
|
#endif\n\t\t\t \n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t#define VFX_VARYING_POSWS
|
|
posWS\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define SHADERPASS
|
|
SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS
|
|
and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151647(inout float scaleX, inout float scaleY, float2 Scale)
|
|
/*attribute:scale Composition:Overwrite Source:Slot Random:Off channels:XY
|
|
*/\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid ColorOverLife_733E3(float age, float
|
|
lifetime, inout float3 color, inout float alpha, float gradient) /*mode:ColorAndAlpha
|
|
ColorComposition:Multiply AlphaComposition:Multiply */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float4 sampledColor = SampleGradient(gradient, age/lifetime);\n\t\t\t
|
|
color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t \n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if
|
|
defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error VFX_PRIMITIVE_QUAD
|
|
must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x80) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0xA0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0xC0) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0xC1) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0xC0) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x80) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0xA0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0xC1) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151647( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
float2(2.5, 0.0666000023));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t SetAttribute_65DEC940(
|
|
/*inout */attributes.pivotX, /*inout */attributes.pivotY, /*inout */attributes.pivotZ,
|
|
float3(-0.5, 0, 0));\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_d);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(1, 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(1, 0.03125);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t
|
|
#ifdef VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
\n\t\t\t float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t float
|
|
alpha = VFXGetFragmentColor(i).a;\n\t\t\t alpha *= VFXGetTextureColor(VFX_SAMPLER(mainTexture),i).a;\n\t\t\t
|
|
#endif\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#if VFX_PASSDEPTH
|
|
== VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2 velocity =
|
|
(i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) - (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\treturn encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\treturn
|
|
(float4)0;\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos :
|
|
SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_FLIPBOOK_INTERPOLATION || USE_EXPOSURE_WEIGHT || WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t//
|
|
x: inverse soft particles fade distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t//
|
|
z: frame blending factor\n\t\t\t\t// w: exposure weight\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD3;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD4;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t\t\tfloat3 normal : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t\t\tfloat3 tangent : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t
|
|
\n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
outMotionVector : SV_Target1;\n\t\t#endif\n\t\t\t};\n\t\t\n\t\t#define VFX_VARYING_PS_INPUTS
|
|
ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define VFX_VARYING_COLOR
|
|
color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t#define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t#define VFX_VARYING_UV uv\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.w\n\t\t#endif\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t#endif\n\t\t\n\t\t#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t\n\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t#define VFX_VARYING_NORMAL normal\n\t\t#endif\n\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t#define VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151647(inout float scaleX, inout float scaleY, float2 Scale)
|
|
/*attribute:scale Composition:Overwrite Source:Slot Random:Off channels:XY
|
|
*/\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid ColorOverLife_733E3(float age, float
|
|
lifetime, inout float3 color, inout float alpha, float gradient) /*mode:ColorAndAlpha
|
|
ColorComposition:Multiply AlphaComposition:Multiply */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float4 sampledColor = SampleGradient(gradient, age/lifetime);\n\t\t\t
|
|
color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t \n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if
|
|
defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error VFX_PRIMITIVE_QUAD
|
|
must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x80) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0xA0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0xC0) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0xC1) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0xC0) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x80) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0xA0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0xC1) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151647( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
float2(2.5, 0.0666000023));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t SetAttribute_65DEC940(
|
|
/*inout */attributes.pivotX, /*inout */attributes.pivotY, /*inout */attributes.pivotZ,
|
|
float3(-0.5, 0, 0));\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_d);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(1, 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(1, 0.03125);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t\t\n\t\t#endif\n\t\t\t\t\n\t\t\t#pragma fragment frag\n\t\t\tps_output
|
|
frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = i.VFX_VARYING_NORMAL * faceMul;\n\t\t\t\t\t\t\tconst VFXUVData uvData
|
|
= GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = i.VFX_VARYING_TANGENT;\n\t\t\t\t\t\t\tfloat3 bitangentWS = cross(i.VFX_VARYING_TANGENT,i.VFX_VARYING_NORMAL);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_BENTFACTORS) && USE_NORMAL_BENDING\t\n\t\t\t\t\t\t\tfloat3
|
|
bentFactors = float3(i.VFX_VARYING_BENTFACTORS.xy,sqrt(1.0f - dot(i.VFX_VARYING_BENTFACTORS,i.VFX_VARYING_BENTFACTORS)));\n\t\t\t\t\t\t\tnormalWS
|
|
= tangentWS * bentFactors.x + bitangentWS * bentFactors.y + normalWS * bentFactors.z;\n\t\t\t\t\t\t\ttangentWS
|
|
= normalize(cross(normalWS,bitangentWS));\n\t\t\t\t\t\t\tbitangentWS = cross(tangentWS,normalWS);\n\t\t\t\t\t\t\ttangentWS
|
|
*= faceMul;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3x3 tbn
|
|
= float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t#if
|
|
VFX_SHADERGRAPH\n\t\t \n\t\t \n\t\t \n\t\t \n\t\t
|
|
#if HAS_SHADERGRAPH_PARAM_COLOR\n\t\t o.color.rgb = OUTSG..rgb;\n\t\t
|
|
#endif\n\t\t \n\t\t #if HAS_SHADERGRAPH_PARAM_ALPHA \n\t\t
|
|
o.color.a = OUTSG.;\n\t\t #endif\n\t\t#else\n\t\t\t\n\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR VFXGetTextureColor(VFX_SAMPLER(mainTexture),i)\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\to.color
|
|
= VFXApplyPreExposure(o.color, i);\n\t\t#endif\n\t\t\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t\t\to.color = VFXTransformFinalColor(o.color);\n\t\t\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t\n\t\t\t\t\t\tfloat2 velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w)
|
|
- (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\tVFXEncodeMotionVector(velocity * 0.5f,
|
|
encodedMotionVector);\n\t\t\t\t\t\t\n\t\t\t\to.outMotionVector = encodedMotionVector;\n\t\t
|
|
o.outMotionVector.a = o.color.a < i.VFX_VARYING_ALPHATHRESHOLD ? 0.0f : 1.0f;
|
|
//Independant clipping for motion vector pass\n\t\t#endif\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Full Screen Scan Pass]Output Particle Distortion Quad'
|
|
source: "Shader \"Hidden/VFX/HUD_Initialize/Full Screen Scan Pass/Output Particle
|
|
Distortion Quad\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tCull Off\r\n\t\t\r\n\t\tTags
|
|
{ \"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"
|
|
}\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
One One\n\t\tZTest LEqual\n\t\tZWrite Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define
|
|
NB_THREADS_PER_GROUP 64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL
|
|
(0)\n\t\t#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION
|
|
(2)\n\t\t#define VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_LIFETIME_CURRENT
|
|
1\n\t\t#define VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT
|
|
1\n\t\t#define VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define
|
|
VFX_USE_AXISX_CURRENT 1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT
|
|
1\n\t\t#define VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEY_CURRENT 1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_AGE_CURRENT 1\n\t\t#define VFX_COLORMAPPING_DEFAULT 1\n\t\t#define
|
|
IS_TRANSPARENT_PARTICLE 1\n\t\t#define VFX_BLENDMODE_ADD 1\n\t\t#define USE_FLIPBOOK
|
|
1\n\t\t#define DISTORTION_SCREENSPACE 1\n\t\t#define VFX_PRIMITIVE_QUAD 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float gradient_c;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float lifetime;\n\t\t
|
|
float texIndex;\n\t\t float3 color;\n\t\t float alpha;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float angleZ;\n\t\t float
|
|
pivotX;\n\t\t float pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t
|
|
float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t float
|
|
age;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D
|
|
distortionBlurMap;\n\t\tSamplerState samplerdistortionBlurMap;\n\t\tfloat4
|
|
distortionBlurMap_TexelSize;\n\t\t\n\n\t\t\n\t\t#define VFX_NEEDS_COLOR_INTERPOLATOR
|
|
(VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if HAS_STRIPS\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define VFX_OPTIONAL_INTERPOLATION
|
|
nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer attributeBuffer;\t\n\t\t\n\t\t#if
|
|
VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint> indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer deadListCount;\n\t\t#endif\n\t\t\n\t\t#if
|
|
HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD
|
|
|| USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t#define UNITY_MATERIAL_LIT\n\t\t\t#pragma multi_compile _
|
|
WRITE_NORMAL_BUFFER\n\t\t\t\n\t\t\t#define NEEDS_NORMAL\tdefined(WRITE_NORMAL_BUFFER)
|
|
|| FORCE_NORMAL_VARYING || SHADERGRAPH_NEEDS_NORMAL_DEPTHONLY\n\t\t\t#define
|
|
NEEDS_TANGENT\tUSE_NORMAL_MAP || USE_NORMAL_BENDING || SHADERGRAPH_NEEDS_TANGENT_DEPTHONLY\n\t\t\t\n\t\t\tstruct
|
|
ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4
|
|
uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2 uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION || VFX_USE_ALPHA_CURRENT\n\t\t\t\t//
|
|
x: alpha threshold\n\t\t\t\t// y: frame blending factor\n\t\t\t\t// z: alpha\n\t\t\t\t//
|
|
w: smoothness\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float4 builtInInterpolants
|
|
: TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vector scale u\n\t\t\t\t// y: motion vector scale v\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
NEEDS_NORMAL\n\t\t\t\tfloat4 normal : TEXCOORD3; // normal scale is stored
|
|
in w\n\t\t\t\t#endif\n\t\t\t\t#if NEEDS_TANGENT\n\t\t\t\tfloat3 tangent : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_NORMAL_BENDING\n\t\t\t\tfloat2 bentFactors : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4 cPosPrevious :
|
|
TEXCOORD6;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if NEEDS_NORMAL\n\t\t\t#define VFX_VARYING_NORMAL normal.xyz\n\t\t\t#endif\n\t\t\t#ifdef
|
|
WRITE_NORMAL_BUFFER\n\t\t\t#define VFX_VARYING_SMOOTHNESS builtInInterpolants.w\n\t\t\t#endif\n\t\t\t#if
|
|
NEEDS_TANGENT\n\t\t\t#define VFX_VARYING_TANGENT tangent\n\t\t\t#endif\n\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t#define VFX_VARYING_NORMALSCALE normal.w\n\t\t\t#endif\n\t\t\t#if
|
|
USE_NORMAL_BENDING\n\t\t\t#define VFX_VARYING_BENTFACTORS bentFactors\n\t\t\t#endif\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS
|
|
cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B229(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
ColorOverLife_733E3(float age, float lifetime, inout float3 color, inout float
|
|
alpha, float gradient) /*mode:ColorAndAlpha ColorComposition:Multiply AlphaComposition:Multiply
|
|
*/\n\t\t\t{\n\t\t\t \n\t\t\t float4 sampledColor = SampleGradient(gradient,
|
|
age/lifetime);\n\t\t\t color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t
|
|
\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error
|
|
VFX_PRIMITIVE_QUAD must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x1400) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.0179999992);\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_c);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(16, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2
|
|
invFlipBookSize = (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t
|
|
invFlipBookSize = float2(0.0625, 0.0625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLit.hlsl\"\n\t\t\t\n\t\t\t#ifndef
|
|
VFX_SHADERGRAPH\n\t\t\t\n\t\t\tvoid VFXGetHDRPLitData(out SurfaceData surfaceData,
|
|
out BuiltinData builtinData, out BSDFData bsdfData, out PreLightData preLightData,
|
|
VFX_VARYING_PS_INPUTS i, float3 normalWS, const VFXUVData uvData, uint2 tileIndex)\n\t\t\t{\t\n\t\t\t\t#if
|
|
HDRP_MATERIAL_TYPE_TRANSLUCENT\n\t\t\t\t // Loads diffusion profile\n\t\t\t\t#else\n\t\t\t\tconst
|
|
uint diffusionProfileHash = 0;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tfloat3 posRWS
|
|
= VFXGetPositionRWS(i);\n\t\t\t\tfloat4 posSS = i.VFX_VARYING_POSCS;\n\t\t\t\tPositionInputs
|
|
posInput = GetPositionInput(posSS.xy, _ScreenSize.zw, posSS.z, posSS.w, posRWS,
|
|
tileIndex);\n\t\t\t\t\n\t\t\t\tfloat alpha;\n\t\t\t\tsurfaceData = VFXGetSurfaceData(i,normalWS,uvData,diffusionProfileHash,alpha);\t\n\t\t\t\tbsdfData
|
|
= ConvertSurfaceDataToBSDFData(posSS.xy, surfaceData);\n\t\t\t\n\t\t\t\tpreLightData
|
|
= GetPreLightData(GetWorldSpaceNormalizeViewDir(posRWS),posInput,bsdfData);\n\t\t\t\t\n\t\t\t\tpreLightData.diffuseFGD
|
|
= 1.0f;\n\t\t\t //TODO: investigate why this is needed\n\t\t\t preLightData.coatPartLambdaV
|
|
= 0;\n\t\t\t preLightData.coatIblR = 0;\n\t\t\t preLightData.coatIblF
|
|
= 0;\n\t\t\t \n\t\t\t\tbuiltinData = VFXGetBuiltinData(i,posInput,surfaceData,uvData,alpha);\n\t\t\t}\n\t\t\t\n\t\t\tvoid
|
|
VFXGetHDRPLitData(out SurfaceData surfaceData, out BuiltinData builtinData,
|
|
VFX_VARYING_PS_INPUTS i, float3 normalWS, const VFXUVData uvData)\n\t\t\t{\n\t\t\t\tBSDFData
|
|
bsdfData = (BSDFData)0;\n\t\t\t\tPreLightData preLightData = (PreLightData)0;\n\t\t\t\tpreLightData.diffuseFGD
|
|
= 1.0f;\n\t\t\t\tVFXGetHDRPLitData(surfaceData,builtinData,bsdfData,preLightData,i,normalWS,uvData,uint2(0,0));\n\t\t\t}\n\t\t\t\n\t\t\t#endif\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLitPixelOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t#pragma fragment frag\n\t\t\tvoid frag(ps_input i\n\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t,
|
|
bool frontFace : SV_IsFrontFace\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH
|
|
== VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t, out float4 outMotionVector : SV_Target0\n\t\t\t\t#ifdef
|
|
WRITE_NORMAL_BUFFER\n\t\t\t\t\t, out float4 outNormalBuffer : SV_Target1\n\t\t\t\t#endif\n\t\t\t#else\n\t\t\t\t#ifdef
|
|
WRITE_NORMAL_BUFFER\n\t\t\t\t\t, out float4 outNormalBuffer : SV_Target0\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\t, out float4 outColor :
|
|
SV_Target0\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t\t)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = i.VFX_VARYING_NORMAL * faceMul;\n\t\t\t\t\t\t\tconst VFXUVData uvData
|
|
= GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = i.VFX_VARYING_TANGENT;\n\t\t\t\t\t\t\tfloat3 bitangentWS = cross(i.VFX_VARYING_TANGENT,i.VFX_VARYING_NORMAL);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_BENTFACTORS) && USE_NORMAL_BENDING\t\n\t\t\t\t\t\t\tfloat3
|
|
bentFactors = float3(i.VFX_VARYING_BENTFACTORS.xy,sqrt(1.0f - dot(i.VFX_VARYING_BENTFACTORS,i.VFX_VARYING_BENTFACTORS)));\n\t\t\t\t\t\t\tnormalWS
|
|
= tangentWS * bentFactors.x + bitangentWS * bentFactors.y + normalWS * bentFactors.z;\n\t\t\t\t\t\t\ttangentWS
|
|
= normalize(cross(normalWS,bitangentWS));\n\t\t\t\t\t\t\tbitangentWS = cross(tangentWS,normalWS);\n\t\t\t\t\t\t\ttangentWS
|
|
*= faceMul;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3x3 tbn
|
|
= float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
\n\t\t\t \n\t\t\t float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t
|
|
float alpha = VFXGetFragmentColor(i).a;\n\t\t\t #if HDRP_USE_BASE_COLOR_MAP_ALPHA\n\t\t\t
|
|
alpha *= VFXGetTextureColor(VFX_SAMPLER(baseColorMap),i).a;\n\t\t\t
|
|
#endif\n\t\t\t #endif\n\t\t\t VFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
WRITE_NORMAL_BUFFER\n\t\t\t #ifndef VFX_SHADERGRAPH\n\t\t\t
|
|
VFXComputePixelOutputToNormalBuffer(i,normalWS,uvData,outNormalBuffer);\n\t\t\t
|
|
#else\n\t\t\t #if HAS_SHADERGRAPH_PARAM_NORMAL\n\t\t\t
|
|
float3 n = OUTSG.Normal_8;\n\t\t\t normalWS = mul(n,tbn);\n\t\t\t
|
|
#endif\n\t\t\t SurfaceData surface = (SurfaceData)0;\n\t\t\t
|
|
\n\t\t\t surface.normalWS = normalWS;\n\t\t\t \n\t\t\t
|
|
EncodeIntoNormalBuffer(ConvertSurfaceDataToNormalData(surface), i.VFX_VARYING_POSCS.xy,
|
|
outNormalBuffer);\n\t\t\t #endif\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2
|
|
velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) -
|
|
(i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\toutMotionVector = encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\t// We use depth prepass
|
|
for scene selection in the editor, this code allow to output the outline correctly\n\t\t\t\t\toutColor
|
|
= float4(_ObjectId, _PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH ==
|
|
VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\t//void\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH
|
|
undefined\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t//
|
|
Distortion pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"DistortionVectors\"
|
|
}\n\t\t\n\t\t\tStencil\n\t\t\t{\n\t\t\t\tWriteMask 64\n\t\t\t\tRef 64\n\t\t\t\tComp
|
|
Always\n\t\t\t\tPass Replace\n\t\t\t}\n\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t#pragma multi_compile _ DEBUG_DISPLAY\n\t\t\t\n\t\t\t#define
|
|
USE_NORMAL_MAP DISTORTION_NORMALBASED\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4
|
|
pos : SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4
|
|
uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2 uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\n\t\t\t\t#if
|
|
USE_SOFT_PARTICLE || VFX_USE_ALPHA_CURRENT || USE_FLIPBOOK_INTERPOLATION \n\t\t\t\t//
|
|
x: inverse soft particles fade distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t//
|
|
z: frame blending factor\n\t\t\t\t// w: alpha\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\n\t\t\t\t#if
|
|
USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t// x: motion vector scale u\n\t\t\t\t//
|
|
y: motion vector scale v\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float2 builtInInterpolants2
|
|
: TEXCOORD2;\n\t\t\t\t#endif\n\t\t\n\t\t\t\t// x: horizontal value / normal
|
|
scale\n\t\t\t\t// y: vertical value \n\t\t\t\t// z: blur scale\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float3 distortionInterpolants : TEXCOORD3;\n\t\t\n\t\t\t\t#if USE_SOFT_PARTICLE\n\t\t\t\tfloat4
|
|
projPos : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\n\t\t\t\t#if DISTORTION_NORMALBASED\n\t\t\t\tfloat3
|
|
normal : TEXCOORD5;\n\t\t\t\tfloat3 tangent : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 distortion : SV_Target0;\n\t\t\t};\n\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_POSSS projPos\n\t\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t #define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_ALPHA builtInInterpolants.w\n\t\t#if
|
|
DISTORTION_NORMALBASED\n\t\t\t#define VFX_VARYING_NORMAL normal\n\t\t\t#define
|
|
VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t#define VFX_VARYING_UV uv\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_3278B229(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
ColorOverLife_733E3(float age, float lifetime, inout float3 color, inout float
|
|
alpha, float gradient) /*mode:ColorAndAlpha ColorComposition:Multiply AlphaComposition:Multiply
|
|
*/\n\t\t\t{\n\t\t\t \n\t\t\t float4 sampledColor = SampleGradient(gradient,
|
|
age/lifetime);\n\t\t\t color *= sampledColor.rgb;\n\t\t\t alpha *= sampledColor.a;\n\t\t\t
|
|
\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\t#if defined(HAS_STRIPS) && !defined(VFX_PRIMITIVE_QUAD)\n\t\t\t#error
|
|
VFX_PRIMITIVE_QUAD must be defined when HAS_STRIPS is.\n\t\t\t#endif\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#define PARTICLE_IN_EDGE (id & 1)\n\t\t\t\n\t\t\tfloat3 GetParticlePosition(uint
|
|
index)\n\t\t\t{\n\t\t\t\tstruct Attributes attributes = (Attributes)0;\n\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\n\n\t\t\t\treturn
|
|
attributes.position;\n\t\t\t}\n\t\t\t\n\t\t\tfloat3 GetStripTangent(float3
|
|
currentPos, uint relativeIndex, const StripData stripData)\n\t\t\t{\n\t\t\t\tfloat3
|
|
prevTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex > 0)\n\t\t\t\t{\n\t\t\t\t\tuint
|
|
prevIndex = GetParticleIndex(relativeIndex - 1,stripData);\n\t\t\t\t\tprevTangent
|
|
= normalize(currentPos - GetParticlePosition(prevIndex));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat3
|
|
nextTangent = (float3)0.0f;\n\t\t\t\tif (relativeIndex < stripData.nextIndex
|
|
- 1)\n\t\t\t\t{\n\t\t\t\t\tuint nextIndex = GetParticleIndex(relativeIndex
|
|
+ 1,stripData);\n\t\t\t\t\tnextTangent = normalize(GetParticlePosition(nextIndex)
|
|
- currentPos);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn normalize(prevTangent +
|
|
nextTangent);\n\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t#if
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\tuint index = id / 3;\n\t\t\t#elif VFX_PRIMITIVE_QUAD\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tid += VFX_GET_INSTANCE_ID(i) * 8192;\n\t\t\t\tconst uint
|
|
vertexPerStripCount = (PARTICLE_PER_STRIP_COUNT - 1) << 2;\n\t\t\t\tconst StripData
|
|
stripData = GetStripDataFromStripIndex(id / vertexPerStripCount, PARTICLE_PER_STRIP_COUNT);\n\t\t\t\tuint
|
|
currentIndex = ((id % vertexPerStripCount) >> 2) + (id & 1); // relative index
|
|
of particle\n\t\t\t\t\n\t\t\t\tuint maxEdgeIndex = currentIndex - PARTICLE_IN_EDGE
|
|
+ 1;\n\t\t\t\tif (maxEdgeIndex >= stripData.nextIndex)\n\t\t\t\t\treturn o;\n\t\t\t\t\n\t\t\t\tuint
|
|
index = GetParticleIndex(currentIndex, stripData);\n\t\t\t#else\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t#endif\n\t\t\t#elif
|
|
VFX_PRIMITIVE_OCTAGON\n\t\t\t\tuint index = (id >> 3) + VFX_GET_INSTANCE_ID(i)
|
|
* 1024;\n\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount = 0;\n\t\t\t\t\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (attributeBuffer.Load((index *
|
|
0x2 + 0x1400) << 2));\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.angleZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x2 + 0x1400) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x1000) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x4 + 0x3) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.age = asfloat(attributeBuffer.Load((index
|
|
* 0x2 + 0x1401) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.0179999992);\n\t\t\t\t}\n\t\t\t\tColorOverLife_733E3(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.color, /*inout */attributes.alpha,
|
|
gradient_c);\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t#if !HAS_STRIPS\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#if VFX_PRIMITIVE_QUAD\n\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t#if VFX_STRIPS_UV_STRECHED\n\t\t\t\to.VFX_VARYING_UV.x =
|
|
(float)(currentIndex) / (stripData.nextIndex - 1);\n\t\t\t#elif VFX_STRIPS_UV_PER_SEGMENT\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= PARTICLE_IN_EDGE;\n\t\t\t#else\n\t\t\t\t\n\t\t\t o.VFX_VARYING_UV.x =
|
|
texCoord;\n\t\t\t#endif\n\t\t\t\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2)
|
|
>> 1);\n\t\t\t\tconst float2 vOffsets = float2(0.0f,o.VFX_VARYING_UV.y - 0.5f);\n\t\t\t\t\n\t\t\t#if
|
|
VFX_STRIPS_SWAP_UV\n\t\t\t\to.VFX_VARYING_UV.xy = float2(1.0f - o.VFX_VARYING_UV.y,
|
|
o.VFX_VARYING_UV.x);\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// Orient strips along
|
|
their tangents\n\t\t\t\tattributes.axisX = GetStripTangent(attributes.position,
|
|
currentIndex, stripData);\n\t\t\t#if !VFX_STRIPS_ORIENT_CUSTOM\n\t\t\t\tattributes.axisZ
|
|
= attributes.position - GetViewVFXPosition();\n\t\t\t#endif\n\t\t\t\tattributes.axisY
|
|
= normalize(cross(attributes.axisZ, attributes.axisX));\n\t\t\t\tattributes.axisZ
|
|
= normalize(cross(attributes.axisX, attributes.axisY));\n\t\t\t\t\n\t\t\t#else\n\t\t\t\to.VFX_VARYING_UV.x
|
|
= float(id & 1);\n\t\t\t\to.VFX_VARYING_UV.y = float((id & 2) >> 1);\n\t\t\t\tconst
|
|
float2 vOffsets = o.VFX_VARYING_UV.xy - 0.5f;\n\t\t\t#endif\n\t\t\t\t\n\t\t\t#elif
|
|
VFX_PRIMITIVE_TRIANGLE\n\t\t\t\n\t\t\t\tconst float2 kOffsets[] = {\n\t\t\t\t\tfloat2(-0.5f,
|
|
\t-0.288675129413604736328125f),\n\t\t\t\t\tfloat2(0.0f, \t0.57735025882720947265625f),\n\t\t\t\t\tfloat2(0.5f,\t-0.288675129413604736328125f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tconst
|
|
float kUVScale = 0.866025388240814208984375f;\n\t\t\t\t\n\t\t\t\tconst float2
|
|
vOffsets = kOffsets[id % 3];\n\t\t\t\to.VFX_VARYING_UV.xy = (vOffsets * kUVScale)
|
|
+ 0.5f;\n\t\t\t\t\n\t\t\t#elif VFX_PRIMITIVE_OCTAGON\t\n\t\t\t\t\n\t\t\t\tconst
|
|
float2 kUvs[8] = \n\t\t\t\t{\n\t\t\t\t\tfloat2(-0.5f,\t0.0f),\n\t\t\t\t\tfloat2(-0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.0f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.5f),\n\t\t\t\t\tfloat2(0.5f,\t0.0f),\n\t\t\t\t\tfloat2(0.5f,\t-0.5f),\n\t\t\t\t\tfloat2(0.0f,\t-0.5f),\n\t\t\t\t\tfloat2(-0.5f,\t-0.5f),\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tcropFactor
|
|
= id & 1 ? 1.0f - cropFactor : 1.0f;\n\t\t\t\tconst float2 vOffsets = kUvs[id
|
|
& 7] * cropFactor;\n\t\t\t\to.VFX_VARYING_UV.xy = vOffsets + 0.5f;\n\t\t\t\t\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t#if
|
|
HAS_STRIPS\n\t\t\t\tsize3 += size3 < 0.0f ? -VFX_EPSILON : VFX_EPSILON; //
|
|
Add an epsilon so that size is never 0 for strips\n\t\t\t#endif\n\t\t\t\t\n\t\t\t\tconst
|
|
float4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = float3(vOffsets, 0.0f);\n\t\t\t\tfloat3 vPos = mul(elementToVFX,float4(inputVertexPosition,
|
|
1.0f)).xyz;\n\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS = TransformPositionVFXToClip(vPos);\n\t\t\t
|
|
\n\t\t\t float3 vPosWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\n\t\t\t
|
|
#ifdef VFX_VARYING_POSWS\n\t\t\t o.VFX_VARYING_POSWS = vPosWS;\n\t\t\t
|
|
#endif\n\t\t\t\n\t\t\t\tfloat3 normalWS = normalize(TransformDirectionVFXToWorld(normalize(-transpose(elementToVFX)[2].xyz)));\n\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\tfloat normalFlip = (size3.x * size3.y * size3.z)
|
|
< 0 ? -1 : 1;\n\t\t\t\to.VFX_VARYING_NORMAL = normalFlip * normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = normalize(TransformDirectionVFXToWorld(normalize(transpose(elementToVFX)[0].xyz)));\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_BENTFACTORS\n\t\t\t\t\n\t\t\t\t#if HAS_STRIPS\n\t\t\t\t#define
|
|
BENT_FACTOR_MULTIPLIER 2.0f\n\t\t\t\t#else\n\t\t\t\t#define BENT_FACTOR_MULTIPLIER
|
|
1.41421353816986083984375f\n\t\t\t\t#endif\n\t\t\t\to.VFX_VARYING_BENTFACTORS
|
|
= vOffsets * normalBendingFactor * BENT_FACTOR_MULTIPLIER;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(16, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2
|
|
invFlipBookSize = (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t
|
|
invFlipBookSize = float2(0.0625, 0.0625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t#if
|
|
DISTORTION_SCREENSPACE\n\t\t\t\t\t\t\t\t\t\t\t\tfloat2 distortionScale = (float2)0;\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t
|
|
\n\t\t\t\t\t\t\t\t\t\t\t\t distortionScale = float2(32, 32);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\to.distortionInterpolants.xy
|
|
= distortionScale;\n\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t#if
|
|
DISTORTION_NORMALBASED\n\t\t\t\t\t\t\t\t\t\t\t\tfloat2 distortionScale = (float2)0;\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t
|
|
\n\t\t\t\t\t\t\t\t\t\t\t\t distortionScale = float2(32, 32);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\to.distortionInterpolants.x
|
|
= distortionScale;\n\t\t\t\t\t\t\t\t\t\t\t\to.distortionInterpolants.y = 0.0;\n\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tfloat
|
|
blurScale = (float)0;\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t
|
|
\n\t\t\t\t\t\t\t\t\t\t\t\t blurScale = (float)1;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\to.distortionInterpolants.z
|
|
= blurScale;\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t#if DISTORTION_SCALE_BY_DISTANCE\n\t\t\t\t\t\t\t\t\t\t\t\t//
|
|
Scale Distortion by Distance\n\t\t\t\t\t\t\t\t\t\t\t\tfloat clipPosW = o.VFX_VARYING_POSCS.w;\n\t\t\t\t\t\t\t\t\t\t\t\to.distortionInterpolants.xy
|
|
/= clipPosW;\n\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfloat2
|
|
distortion;\n\t\t\t\t\t\t\t\t\tfloat blur;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
DISTORTION_SCREENSPACE\n\t\t\t\t\t\t\t\t\tfloat3 smpDistort = VFXGetTextureColor(VFX_SAMPLER(distortionBlurMap),i).xyz;\n\t\t\t\t\t\t\t\t\tdistortion
|
|
= (smpDistort.xy * 2.0 - 1.0) * i.distortionInterpolants.xy;\n\t\t\t\t\t\t\t\t\tblur
|
|
= smpDistort.z * i.distortionInterpolants.z;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
DISTORTION_NORMALBASED\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3
|
|
normalWS = i.VFX_VARYING_NORMAL * faceMul;\n\t\t\t\t\t\t\t\t\t\t\t\tconst VFXUVData
|
|
uvData = GetUVData(i);\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3 tangentWS = i.VFX_VARYING_TANGENT;\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3
|
|
bitangentWS = cross(i.VFX_VARYING_TANGENT,i.VFX_VARYING_NORMAL);\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_BENTFACTORS) && USE_NORMAL_BENDING\t\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3
|
|
bentFactors = float3(i.VFX_VARYING_BENTFACTORS.xy,sqrt(1.0f - dot(i.VFX_VARYING_BENTFACTORS,i.VFX_VARYING_BENTFACTORS)));\n\t\t\t\t\t\t\t\t\t\t\t\tnormalWS
|
|
= tangentWS * bentFactors.x + bitangentWS * bentFactors.y + normalWS * bentFactors.z;\n\t\t\t\t\t\t\t\t\t\t\t\ttangentWS
|
|
= normalize(cross(normalWS,bitangentWS));\n\t\t\t\t\t\t\t\t\t\t\t\tbitangentWS
|
|
= cross(tangentWS,normalWS);\n\t\t\t\t\t\t\t\t\t\t\t\ttangentWS *= faceMul;\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3x3
|
|
tbn = float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfloat3
|
|
viewNormal = mul(VFXGetWorldToViewRotMatrix(),normalWS);\n\t\t\t\t\t\t\t\t\tfloat
|
|
smpSmoothness = VFXGetTextureColor(VFX_SAMPLER(smoothnessMap),i).a;\n\t\t\t\t\t\t\t\t\tfloat
|
|
smpMask = VFXGetTextureColor(VFX_SAMPLER(alphaMask),i).a;\n\t\t\t\t\t\t\t\t\tdistortion
|
|
= viewNormal.xy * i.distortionInterpolants.x * smpMask;\n\t\t\t\t\t\t\t\t\tblur
|
|
= (1.0-smpSmoothness) * i.distortionInterpolants.z * smpMask; \n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\tfloat
|
|
fade = VFXGetSoftParticleFade(i);\n\t\t\t\t\t\t\t\t\to.distortion.xyw = fade
|
|
* i.VFX_VARYING_ALPHA * float3(distortion.xy, blur);\n\t\t\t\t\t\t\t\t\to.distortion.z
|
|
= 1.0;\n\t\t\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Circle / Parenthesis Outline]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_USE_PARTICLEID_CURRENT
|
|
1\n#define VFX_USE_TARGETPOSITION_CURRENT 1\n#define VFX_USE_SIZE_CURRENT 1\n#define
|
|
VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n float3 position;\n uint particleId;\n float3 targetPosition;\n
|
|
float size;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define USE_DEAD_LIST
|
|
(VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer attributeBuffer;\r\nByteAddressBuffer
|
|
sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
uint nbSpawned;\t\t\t\t\t// Numbers of particle spawned\r\n uint spawnIndex;\t\t\t\t//
|
|
Index of the first particle spawned\r\n uint dispatchWidth;\r\n#else\r\n
|
|
uint offsetInAdditionalOutput;\r\n\tuint nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if
|
|
USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListIn;\r\nByteAddressBuffer
|
|
deadListCount; // This is bad to use a SRV to fetch deadList count but Unity
|
|
API currently prevent from copying to CB\r\n#endif\r\n\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint>
|
|
eventList;\r\nByteAddressBuffer inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint>
|
|
stripDataBuffer;\r\n#endif\r\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_CAC29747(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n position
|
|
= Position;\n}\nvoid PositionSequential_C89B0775(uint particleId, inout float3
|
|
position, inout float3 targetPosition, float3 computedPosition, float3 computedTargetPosition)
|
|
/*shape:Circle index:ParticleID writePosition:True writeTargetPosition:True
|
|
mode:Wrap */\n{\n position += computedPosition;\n targetPosition += computedTargetPosition;\n
|
|
\n}\nvoid SetAttribute_3278B229(inout float size, float Size) /*attribute:size
|
|
Composition:Overwrite Source:Slot Random:Off channels:X */\n{\n size = Size;\n}\n\n\r\n\r\n#if
|
|
HAS_STRIPS\r\nbool GetParticleIndex(inout uint particleIndex, uint stripIndex)\r\n{\r\n\tuint
|
|
relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT) // strip
|
|
is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
-1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.position = float3(0, 0, 0);\n attributes.particleId = (uint)0;\n
|
|
attributes.targetPosition = float3(0, 0, 0);\n attributes.size = (float)0.100000001;\n
|
|
\n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n attributes.particleId = particleIndex;\r\n#endif\r\n#if
|
|
VFX_USE_SEED_CURRENT\r\n attributes.seed = WangHash(particleIndex ^
|
|
systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n attributes.spawnIndex
|
|
= id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n SetAttribute_CAC29747(
|
|
/*inout */attributes.position, float3(0, 0, 0));\n }\n {\n
|
|
uint tmp_j = attributes.particleId / (uint)128;\n uint tmp_k = tmp_j
|
|
* (uint)128;\n uint tmp_l = attributes.particleId - tmp_k;\n
|
|
float tmp_m = (float)tmp_l;\n float tmp_o = tmp_m / (float)128;\n
|
|
float tmp_q = tmp_o * (float)6.28318548;\n float tmp_r = cos(tmp_q);\n
|
|
float3 tmp_s = float3(tmp_r, tmp_r, tmp_r);\n float3 tmp_u = tmp_s
|
|
* float3(0, 1, 0);\n float tmp_v = sin(tmp_q);\n float3
|
|
tmp_w = float3(tmp_v, tmp_v, tmp_v);\n float3 tmp_y = tmp_w * float3(-1,
|
|
0, 0);\n float3 tmp_z = tmp_u + tmp_y;\n float3 tmp_bb
|
|
= tmp_z * float3(0.00079999998, 0.00079999998, 0.00079999998);\n
|
|
float3 tmp_bc = float3(0, 0, 0.0300099999) + tmp_bb;\n uint tmp_be
|
|
= attributes.particleId + (uint)1;\n uint tmp_bf = tmp_be / (uint)128;\n
|
|
uint tmp_bg = tmp_bf * (uint)128;\n uint tmp_bh = tmp_be - tmp_bg;\n
|
|
float tmp_bi = (float)tmp_bh;\n float tmp_bj = tmp_bi / (float)128;\n
|
|
float tmp_bk = tmp_bj * (float)6.28318548;\n float tmp_bl = cos(tmp_bk);\n
|
|
float3 tmp_bm = float3(tmp_bl, tmp_bl, tmp_bl);\n float3 tmp_bn
|
|
= tmp_bm * float3(0, 1, 0);\n float tmp_bo = sin(tmp_bk);\n
|
|
float3 tmp_bp = float3(tmp_bo, tmp_bo, tmp_bo);\n float3 tmp_bq
|
|
= tmp_bp * float3(-1, 0, 0);\n float3 tmp_br = tmp_bn + tmp_bq;\n
|
|
float3 tmp_bs = tmp_br * float3(0.00079999998, 0.00079999998, 0.00079999998);\n
|
|
float3 tmp_bt = float3(0, 0, 0.0300099999) + tmp_bs;\n PositionSequential_C89B0775(attributes.particleId,
|
|
/*inout */attributes.position, /*inout */attributes.targetPosition, tmp_bc,
|
|
tmp_bt);\n }\n {\n SetAttribute_3278B229( /*inout
|
|
*/attributes.size, (float)0);\n }\n \n\r\n\t\t\r\n#if VFX_USE_ALIVE_CURRENT\r\n
|
|
if (attributes.alive)\r\n#endif \r\n {\r\n#if USE_DEAD_LIST\r\n\t
|
|
uint deadIndex = deadListIn.DecrementCounter();\r\n uint index =
|
|
deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x8 + 0x0) << 2,asuint(attributes.position));\n
|
|
attributeBuffer.Store3((index * 0x8 + 0x4) << 2,asuint(attributes.targetPosition));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x400) << 2,asuint(attributes.size));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Circle / Parenthesis Outline]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_SIZE_CURRENT 1\n#define VFX_LOCAL_SPACE
|
|
1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float uniform_b;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float size;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define USE_DEAD_LIST
|
|
(VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer attributeBuffer;\r\n\r\n#if
|
|
USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_3278B229(inout float size, float Size) /*attribute:size Composition:Overwrite
|
|
Source:Slot Random:Off channels:X */\n{\n size = Size;\n}\n\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n\tuint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP
|
|
+ groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif
|
|
(id < nbMax)\r\n\t{\r\n Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes
|
|
sourceAttributes = (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\t\r\n\t\tif
|
|
(attributes.alive)\r\n\t\t{\r\n\t\t\tattributes.size = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x400) << 2));\n\t\t\t\n\r\n\r\n// Initialize built-in needed attributes\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\t{\n\t\t\t float tmp_i = uniform_b
|
|
+ attributes.size;\n\t\t\t float tmp_j = saturate(tmp_i);\n\t\t\t SetAttribute_3278B229(
|
|
/*inout */attributes.size, tmp_j);\n\t\t\t}\n\t\t\t\n\r\n\r\n\t\t\tif (attributes.alive)\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x1 + 0x400) << 2,asuint(attributes.size));\n\t\t\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t\r\n#if
|
|
USE_DEAD_LIST && !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\tattributes.size
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x400) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\t{\n\t\t float tmp_i = uniform_b + attributes.size;\n\t\t
|
|
float tmp_j = saturate(tmp_i);\n\t\t SetAttribute_3278B229( /*inout */attributes.size,
|
|
tmp_j);\n\t\t}\n\t\t\n\r\n\t\tattributeBuffer.Store((index * 0x1 + 0x400) <<
|
|
2,asuint(attributes.size));\n\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Circle / Parenthesis Outline]Output Particle Line'
|
|
source: "Shader \"Hidden/VFX/HUD_Reticula/Circle / Parenthesis Outline/Output
|
|
Particle Line\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tTags { \"Queue\"=\"Transparent+700\"
|
|
\"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
One OneMinusSrcAlpha , Zero OneMinusSrcAlpha\n\t\tZTest LEqual\n\t\tZWrite
|
|
On\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define NB_THREADS_PER_GROUP
|
|
64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL (0)\n\t\t#define
|
|
VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION (2)\n\t\t#define
|
|
VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_TARGETPOSITION_CURRENT 1\n\t\t#define
|
|
VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define VFX_USE_ALPHA_CURRENT
|
|
1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define VFX_COLORMAPPING_DEFAULT
|
|
1\n\t\t#define IS_TRANSPARENT_PARTICLE 1\n\t\t#define VFX_BLENDMODE_PREMULTIPLY
|
|
1\n\t\t#define VFX_BYPASS_EXPOSURE 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float4 uniform_b;\n\t\t float uniform_c;\n\t\t float Alive_f;\n\t\t
|
|
uint2 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct Attributes\n\t\t{\n\t\t
|
|
float3 position;\n\t\t float3 targetPosition;\n\t\t float size;\n\t\t
|
|
float3 color;\n\t\t float alpha;\n\t\t bool alive;\n\t\t};\n\t\t\n\t\tstruct
|
|
SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\t\n\n\t\t\n\t\t#define VFX_NEEDS_COLOR_INTERPOLATOR
|
|
(VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if HAS_STRIPS\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define VFX_OPTIONAL_INTERPOLATION
|
|
nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer attributeBuffer;\t\n\t\t\n\t\t#if
|
|
VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint> indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if
|
|
USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer deadListCount;\n\t\t#endif\n\t\t\n\t\t#if
|
|
HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD
|
|
|| USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_ALPHA_TEST || VFX_USE_ALPHA_CURRENT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants : TEXCOORD0;\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.y\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t\t\t\t\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_CEEAF35C(inout float alpha, float Alpha) /*attribute:alpha Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alpha = Alpha;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_C707D62A(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Add Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t
|
|
position += Position;\n\t\t\t}\n\t\t\tvoid SetAttribute_30AEC127(inout float3
|
|
targetPosition, float3 TargetPosition) /*attribute:targetPosition Composition:Add
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t targetPosition +=
|
|
TargetPosition;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.targetPosition = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.size = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x400) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.targetPosition
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.size
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x400) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_CEEAF35C( /*inout */attributes.alpha, (float)1);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
float3 tmp_l = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_n
|
|
= tmp_l * tmp_l;\n\t\t\t\t float tmp_o = tmp_n[2];\n\t\t\t\t float tmp_p
|
|
= tmp_n[1];\n\t\t\t\t float tmp_q = tmp_o + tmp_p;\n\t\t\t\t float tmp_r
|
|
= tmp_n[0];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_u
|
|
= pow(tmp_s, (float)0.5);\n\t\t\t\t float tmp_v = (float)1 / tmp_u;\n\t\t\t\t
|
|
float3 tmp_w = float3(tmp_v, tmp_v, tmp_v);\n\t\t\t\t float3 tmp_x = tmp_l
|
|
* tmp_w;\n\t\t\t\t float tmp_y = SampleCurve(uniform_b,attributes.size);\n\t\t\t\t
|
|
float3 tmp_z = float3(tmp_y, tmp_y, tmp_y);\n\t\t\t\t float3 tmp_ba = tmp_x
|
|
* tmp_z;\n\t\t\t\t float3 tmp_bc = tmp_ba * float3(0.0155499997, 0.0155499997,
|
|
0.0155499997);\n\t\t\t\t SetAttribute_C707D62A( /*inout */attributes.position,
|
|
tmp_bc);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t float3 tmp_l = attributes.targetPosition
|
|
* float3(1, 1, 0);\n\t\t\t\t float3 tmp_n = tmp_l * tmp_l;\n\t\t\t\t
|
|
float tmp_o = tmp_n[2];\n\t\t\t\t float tmp_p = tmp_n[1];\n\t\t\t\t float
|
|
tmp_q = tmp_o + tmp_p;\n\t\t\t\t float tmp_r = tmp_n[0];\n\t\t\t\t float
|
|
tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_u = pow(tmp_s, (float)0.5);\n\t\t\t\t
|
|
float tmp_v = (float)1 / tmp_u;\n\t\t\t\t float3 tmp_w = float3(tmp_v, tmp_v,
|
|
tmp_v);\n\t\t\t\t float3 tmp_x = tmp_l * tmp_w;\n\t\t\t\t float tmp_y
|
|
= SampleCurve(uniform_b,attributes.size);\n\t\t\t\t float3 tmp_z = float3(tmp_y,
|
|
tmp_y, tmp_y);\n\t\t\t\t float3 tmp_ba = tmp_x * tmp_z;\n\t\t\t\t float3
|
|
tmp_bc = tmp_ba * float3(0.0155499997, 0.0155499997, 0.0155499997);\n\t\t\t\t
|
|
SetAttribute_30AEC127( /*inout */attributes.targetPosition, tmp_bc);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
float4 tmp_l = float4(attributes.size, attributes.size, attributes.size, attributes.size);\n\t\t\t\t
|
|
float3 tmp_n = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_p
|
|
= tmp_n * tmp_n;\n\t\t\t\t float tmp_q = tmp_p[2];\n\t\t\t\t float tmp_r
|
|
= tmp_p[1];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_t
|
|
= tmp_p[0];\n\t\t\t\t float tmp_u = tmp_s + tmp_t;\n\t\t\t\t float tmp_w
|
|
= pow(tmp_u, (float)0.5);\n\t\t\t\t float tmp_x = (float)1 / tmp_w;\n\t\t\t\t
|
|
float3 tmp_y = float3(tmp_x, tmp_x, tmp_x);\n\t\t\t\t float3 tmp_z = tmp_n
|
|
* tmp_y;\n\t\t\t\t float3 tmp_bb = tmp_z * float3(1, 0, 0);\n\t\t\t\t
|
|
float tmp_bc = tmp_bb[2];\n\t\t\t\t float tmp_bd = tmp_bb[1];\n\t\t\t\t
|
|
float tmp_be = tmp_bc + tmp_bd;\n\t\t\t\t float tmp_bf = tmp_bb[0];\n\t\t\t\t
|
|
float tmp_bg = tmp_be + tmp_bf;\n\t\t\t\t float tmp_bh = abs(tmp_bg);\n\t\t\t\t
|
|
float tmp_bi = saturate(tmp_bh);\n\t\t\t\t float4 tmp_bj = SampleGradient(uniform_c,tmp_bi);\n\t\t\t\t
|
|
float4 tmp_bk = float4(0, 0.0932306945, 0.303000003, 0.435294122) * tmp_bj;\n\t\t\t\t
|
|
float4 tmp_bl = tmp_bk - float4(0, 0.0932306945, 0.303000003, 0.435294122);\n\t\t\t\t
|
|
float4 tmp_bm = tmp_l * tmp_bl;\n\t\t\t\t float4 tmp_bn = float4(0, 0.0932306945,
|
|
0.303000003, 0.435294122) + tmp_bm;\n\t\t\t\t float tmp_bo = tmp_bn[0];\n\t\t\t\t
|
|
float tmp_bp = tmp_bn[1];\n\t\t\t\t float tmp_bq = tmp_bn[2];\n\t\t\t\t
|
|
float3 tmp_br = float3(tmp_bo, tmp_bp, tmp_bq);\n\t\t\t\t SetAttribute_FDD06EC7(
|
|
/*inout */attributes.color, tmp_br);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t float4
|
|
tmp_l = float4(attributes.size, attributes.size, attributes.size, attributes.size);\n\t\t\t\t
|
|
float3 tmp_n = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_p
|
|
= tmp_n * tmp_n;\n\t\t\t\t float tmp_q = tmp_p[2];\n\t\t\t\t float tmp_r
|
|
= tmp_p[1];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_t
|
|
= tmp_p[0];\n\t\t\t\t float tmp_u = tmp_s + tmp_t;\n\t\t\t\t float tmp_w
|
|
= pow(tmp_u, (float)0.5);\n\t\t\t\t float tmp_x = (float)1 / tmp_w;\n\t\t\t\t
|
|
float3 tmp_y = float3(tmp_x, tmp_x, tmp_x);\n\t\t\t\t float3 tmp_z = tmp_n
|
|
* tmp_y;\n\t\t\t\t float3 tmp_bb = tmp_z * float3(1, 0, 0);\n\t\t\t\t
|
|
float tmp_bc = tmp_bb[2];\n\t\t\t\t float tmp_bd = tmp_bb[1];\n\t\t\t\t
|
|
float tmp_be = tmp_bc + tmp_bd;\n\t\t\t\t float tmp_bf = tmp_bb[0];\n\t\t\t\t
|
|
float tmp_bg = tmp_be + tmp_bf;\n\t\t\t\t float tmp_bh = abs(tmp_bg);\n\t\t\t\t
|
|
float tmp_bi = saturate(tmp_bh);\n\t\t\t\t float4 tmp_bj = SampleGradient(uniform_c,tmp_bi);\n\t\t\t\t
|
|
float4 tmp_bk = float4(0, 0.0932306945, 0.303000003, 0.435294122) * tmp_bj;\n\t\t\t\t
|
|
float4 tmp_bl = tmp_bk - float4(0, 0.0932306945, 0.303000003, 0.435294122);\n\t\t\t\t
|
|
float4 tmp_bm = tmp_l * tmp_bl;\n\t\t\t\t float4 tmp_bn = float4(0, 0.0932306945,
|
|
0.303000003, 0.435294122) + tmp_bm;\n\t\t\t\t float tmp_bo = tmp_bn[3];\n\t\t\t\t
|
|
SetAttribute_CEEAF35C( /*inout */attributes.alpha, tmp_bo);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_f));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tattributes.targetPosition
|
|
= mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\tfloat
|
|
alpha = VFXGetFragmentColor(i);\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\treturn
|
|
(float4)0;\n\t\t\t#else\n\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t#endif\n\t\t\t}\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos
|
|
: SV_POSITION;\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t\t\tnoperspective
|
|
float pixelOffset : TEXCOORD0; // for AA\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_EXPOSURE_WEIGHT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3 builtInInterpolants
|
|
: TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t\t};\n\t\t\n\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define
|
|
VFX_VARYING_COLOR color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define
|
|
VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE builtInInterpolants.x\n\t\t#define
|
|
VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t#define
|
|
VFX_VARYING_PIXELOFFSET pixelOffset\n\t\t#endif\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.z\n\t\t#endif\n\t\t\n\t\t
|
|
#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_CEEAF35C(inout float alpha, float Alpha) /*attribute:alpha Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alpha = Alpha;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_C707D62A(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Add Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t
|
|
position += Position;\n\t\t\t}\n\t\t\tvoid SetAttribute_30AEC127(inout float3
|
|
targetPosition, float3 TargetPosition) /*attribute:targetPosition Composition:Add
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t targetPosition +=
|
|
TargetPosition;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.targetPosition = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.size = asfloat(attributeBuffer.Load((index
|
|
* 0x1 + 0x400) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.targetPosition
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.size
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x400) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_CEEAF35C( /*inout */attributes.alpha, (float)1);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
float3 tmp_l = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_n
|
|
= tmp_l * tmp_l;\n\t\t\t\t float tmp_o = tmp_n[2];\n\t\t\t\t float tmp_p
|
|
= tmp_n[1];\n\t\t\t\t float tmp_q = tmp_o + tmp_p;\n\t\t\t\t float tmp_r
|
|
= tmp_n[0];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_u
|
|
= pow(tmp_s, (float)0.5);\n\t\t\t\t float tmp_v = (float)1 / tmp_u;\n\t\t\t\t
|
|
float3 tmp_w = float3(tmp_v, tmp_v, tmp_v);\n\t\t\t\t float3 tmp_x = tmp_l
|
|
* tmp_w;\n\t\t\t\t float tmp_y = SampleCurve(uniform_b,attributes.size);\n\t\t\t\t
|
|
float3 tmp_z = float3(tmp_y, tmp_y, tmp_y);\n\t\t\t\t float3 tmp_ba = tmp_x
|
|
* tmp_z;\n\t\t\t\t float3 tmp_bc = tmp_ba * float3(0.0155499997, 0.0155499997,
|
|
0.0155499997);\n\t\t\t\t SetAttribute_C707D62A( /*inout */attributes.position,
|
|
tmp_bc);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t float3 tmp_l = attributes.targetPosition
|
|
* float3(1, 1, 0);\n\t\t\t\t float3 tmp_n = tmp_l * tmp_l;\n\t\t\t\t
|
|
float tmp_o = tmp_n[2];\n\t\t\t\t float tmp_p = tmp_n[1];\n\t\t\t\t float
|
|
tmp_q = tmp_o + tmp_p;\n\t\t\t\t float tmp_r = tmp_n[0];\n\t\t\t\t float
|
|
tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_u = pow(tmp_s, (float)0.5);\n\t\t\t\t
|
|
float tmp_v = (float)1 / tmp_u;\n\t\t\t\t float3 tmp_w = float3(tmp_v, tmp_v,
|
|
tmp_v);\n\t\t\t\t float3 tmp_x = tmp_l * tmp_w;\n\t\t\t\t float tmp_y
|
|
= SampleCurve(uniform_b,attributes.size);\n\t\t\t\t float3 tmp_z = float3(tmp_y,
|
|
tmp_y, tmp_y);\n\t\t\t\t float3 tmp_ba = tmp_x * tmp_z;\n\t\t\t\t float3
|
|
tmp_bc = tmp_ba * float3(0.0155499997, 0.0155499997, 0.0155499997);\n\t\t\t\t
|
|
SetAttribute_30AEC127( /*inout */attributes.targetPosition, tmp_bc);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
float4 tmp_l = float4(attributes.size, attributes.size, attributes.size, attributes.size);\n\t\t\t\t
|
|
float3 tmp_n = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_p
|
|
= tmp_n * tmp_n;\n\t\t\t\t float tmp_q = tmp_p[2];\n\t\t\t\t float tmp_r
|
|
= tmp_p[1];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_t
|
|
= tmp_p[0];\n\t\t\t\t float tmp_u = tmp_s + tmp_t;\n\t\t\t\t float tmp_w
|
|
= pow(tmp_u, (float)0.5);\n\t\t\t\t float tmp_x = (float)1 / tmp_w;\n\t\t\t\t
|
|
float3 tmp_y = float3(tmp_x, tmp_x, tmp_x);\n\t\t\t\t float3 tmp_z = tmp_n
|
|
* tmp_y;\n\t\t\t\t float3 tmp_bb = tmp_z * float3(1, 0, 0);\n\t\t\t\t
|
|
float tmp_bc = tmp_bb[2];\n\t\t\t\t float tmp_bd = tmp_bb[1];\n\t\t\t\t
|
|
float tmp_be = tmp_bc + tmp_bd;\n\t\t\t\t float tmp_bf = tmp_bb[0];\n\t\t\t\t
|
|
float tmp_bg = tmp_be + tmp_bf;\n\t\t\t\t float tmp_bh = abs(tmp_bg);\n\t\t\t\t
|
|
float tmp_bi = saturate(tmp_bh);\n\t\t\t\t float4 tmp_bj = SampleGradient(uniform_c,tmp_bi);\n\t\t\t\t
|
|
float4 tmp_bk = float4(0, 0.0932306945, 0.303000003, 0.435294122) * tmp_bj;\n\t\t\t\t
|
|
float4 tmp_bl = tmp_bk - float4(0, 0.0932306945, 0.303000003, 0.435294122);\n\t\t\t\t
|
|
float4 tmp_bm = tmp_l * tmp_bl;\n\t\t\t\t float4 tmp_bn = float4(0, 0.0932306945,
|
|
0.303000003, 0.435294122) + tmp_bm;\n\t\t\t\t float tmp_bo = tmp_bn[0];\n\t\t\t\t
|
|
float tmp_bp = tmp_bn[1];\n\t\t\t\t float tmp_bq = tmp_bn[2];\n\t\t\t\t
|
|
float3 tmp_br = float3(tmp_bo, tmp_bp, tmp_bq);\n\t\t\t\t SetAttribute_FDD06EC7(
|
|
/*inout */attributes.color, tmp_br);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t float4
|
|
tmp_l = float4(attributes.size, attributes.size, attributes.size, attributes.size);\n\t\t\t\t
|
|
float3 tmp_n = attributes.position * float3(1, 1, 0);\n\t\t\t\t float3 tmp_p
|
|
= tmp_n * tmp_n;\n\t\t\t\t float tmp_q = tmp_p[2];\n\t\t\t\t float tmp_r
|
|
= tmp_p[1];\n\t\t\t\t float tmp_s = tmp_q + tmp_r;\n\t\t\t\t float tmp_t
|
|
= tmp_p[0];\n\t\t\t\t float tmp_u = tmp_s + tmp_t;\n\t\t\t\t float tmp_w
|
|
= pow(tmp_u, (float)0.5);\n\t\t\t\t float tmp_x = (float)1 / tmp_w;\n\t\t\t\t
|
|
float3 tmp_y = float3(tmp_x, tmp_x, tmp_x);\n\t\t\t\t float3 tmp_z = tmp_n
|
|
* tmp_y;\n\t\t\t\t float3 tmp_bb = tmp_z * float3(1, 0, 0);\n\t\t\t\t
|
|
float tmp_bc = tmp_bb[2];\n\t\t\t\t float tmp_bd = tmp_bb[1];\n\t\t\t\t
|
|
float tmp_be = tmp_bc + tmp_bd;\n\t\t\t\t float tmp_bf = tmp_bb[0];\n\t\t\t\t
|
|
float tmp_bg = tmp_be + tmp_bf;\n\t\t\t\t float tmp_bh = abs(tmp_bg);\n\t\t\t\t
|
|
float tmp_bi = saturate(tmp_bh);\n\t\t\t\t float4 tmp_bj = SampleGradient(uniform_c,tmp_bi);\n\t\t\t\t
|
|
float4 tmp_bk = float4(0, 0.0932306945, 0.303000003, 0.435294122) * tmp_bj;\n\t\t\t\t
|
|
float4 tmp_bl = tmp_bk - float4(0, 0.0932306945, 0.303000003, 0.435294122);\n\t\t\t\t
|
|
float4 tmp_bm = tmp_l * tmp_bl;\n\t\t\t\t float4 tmp_bn = float4(0, 0.0932306945,
|
|
0.303000003, 0.435294122) + tmp_bm;\n\t\t\t\t float tmp_bo = tmp_bn[3];\n\t\t\t\t
|
|
SetAttribute_CEEAF35C( /*inout */attributes.alpha, tmp_bo);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_f));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tattributes.targetPosition
|
|
= mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t//
|
|
Line AA\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\t\n\t\t\t\to.color.a *= 1.0f -
|
|
abs(i.pixelOffset);\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\to.color = VFXApplyPreExposure(o.color,
|
|
i);\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t o.color = VFXTransformFinalColor(o.color);\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Reticula Circular Patterns (When hovering)]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_USE_LIFETIME_CURRENT
|
|
1\n#define VFX_USE_SEED_CURRENT 1\n#define VFX_USE_ALPHA_CURRENT 1\n#define
|
|
VFX_USE_TEXINDEX_CURRENT 1\n#define VFX_USE_ANGLEZ_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT
|
|
1\n#define VFX_USE_PARTICLEID_CURRENT 1\n#define VFX_USE_AGE_CURRENT 1\n#define
|
|
VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n float3 position;\n float lifetime;\n uint seed;\n
|
|
float alpha;\n float texIndex;\n float angleZ;\n bool alive;\n
|
|
uint particleId;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\nByteAddressBuffer sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n uint nbSpawned;\t\t\t\t\t// Numbers of particle
|
|
spawned\r\n uint spawnIndex;\t\t\t\t// Index of the first particle spawned\r\n
|
|
uint dispatchWidth;\r\n#else\r\n uint offsetInAdditionalOutput;\r\n\tuint
|
|
nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint>
|
|
deadListIn;\r\nByteAddressBuffer deadListCount; // This is bad to use a SRV
|
|
to fetch deadList count but Unity API currently prevent from copying to CB\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint> eventList;\r\nByteAddressBuffer
|
|
inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_CAC29747(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n position
|
|
= Position;\n}\nvoid SetAttribute_F01429A3(inout float lifetime, inout uint
|
|
seed, float A, float B) /*attribute:lifetime Composition:Overwrite Source:Slot
|
|
Random:Uniform channels:XYZ */\n{\n lifetime = lerp(A,B,RAND);\n}\nvoid
|
|
SetAttribute_CEEAF046(inout float alpha, inout uint seed, float A, float B)
|
|
/*attribute:alpha Composition:Overwrite Source:Slot Random:Uniform channels:XYZ
|
|
*/\n{\n alpha = lerp(A,B,RAND);\n}\nvoid SetAttribute_CA100327(inout float
|
|
texIndex, inout uint seed, float A, float B) /*attribute:texIndex Composition:Overwrite
|
|
Source:Slot Random:Uniform channels:XYZ */\n{\n texIndex = lerp(A,B,RAND);\n}\nvoid
|
|
SetAttribute_48A7C211(inout float angleZ, inout uint seed, float A, float B)
|
|
/*attribute:angle Composition:Overwrite Source:Slot Random:Uniform channels:Z
|
|
*/\n{\n angleZ = lerp(A.x,B.x,RAND);\n}\n\n\r\n\r\n#if HAS_STRIPS\r\nbool
|
|
GetParticleIndex(inout uint particleIndex, uint stripIndex)\r\n{\r\n\tuint
|
|
relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT) // strip
|
|
is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX, stripIndex),
|
|
-1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.position = float3(0, 0, 0);\n attributes.lifetime = (float)1;\n
|
|
attributes.seed = (uint)0;\n attributes.alpha = (float)1;\n attributes.texIndex
|
|
= (float)0;\n attributes.angleZ = (float)0;\n attributes.alive
|
|
= (bool)true;\n attributes.particleId = (uint)0;\n attributes.age
|
|
= (float)0;\n \n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n attributes.particleId
|
|
= particleIndex;\r\n#endif\r\n#if VFX_USE_SEED_CURRENT\r\n attributes.seed
|
|
= WangHash(particleIndex ^ systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n
|
|
attributes.spawnIndex = id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n SetAttribute_CAC29747(
|
|
/*inout */attributes.position, float3(0, 0, 0.0300099999));\n }\n
|
|
{\n SetAttribute_F01429A3( /*inout */attributes.lifetime, /*inout
|
|
*/attributes.seed, (float)0.100000001, (float)0.200000003);\n }\n
|
|
{\n SetAttribute_CEEAF046( /*inout */attributes.alpha, /*inout
|
|
*/attributes.seed, (float)0, (float)1);\n }\n {\n
|
|
SetAttribute_CA100327( /*inout */attributes.texIndex, /*inout */attributes.seed,
|
|
(float)0, (float)511);\n }\n {\n SetAttribute_48A7C211(
|
|
/*inout */attributes.angleZ, /*inout */attributes.seed, (float)0, (float)360);\n
|
|
}\n \n\r\n\t\t\r\n#if VFX_USE_ALIVE_CURRENT\r\n if (attributes.alive)\r\n#endif
|
|
\r\n {\r\n#if USE_DEAD_LIST\r\n\t uint deadIndex = deadListIn.DecrementCounter();\r\n
|
|
uint index = deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x8 + 0x0) << 2,asuint(attributes.position));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x20) << 2,asuint(attributes.lifetime));\n
|
|
attributeBuffer.Store((index * 0x8 + 0x3) << 2,asuint(attributes.alpha));\n
|
|
attributeBuffer.Store((index * 0x8 + 0x4) << 2,asuint(attributes.texIndex));\n
|
|
attributeBuffer.Store((index * 0x8 + 0x5) << 2,asuint(attributes.angleZ));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x24) << 2,uint(attributes.alive));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x28) << 2,asuint(attributes.particleId));\n
|
|
attributeBuffer.Store((index * 0x1 + 0x2C) << 2,asuint(attributes.age));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Reticula Circular Patterns (When hovering)]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_LIFETIME_CURRENT 1\n#define VFX_USE_ALIVE_CURRENT
|
|
1\n#define VFX_USE_AGE_CURRENT 1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float deltaTime_a;\n uint3 PADDING_0;\nCBUFFER_END\n\nstruct Attributes\n{\n
|
|
float lifetime;\n bool alive;\n float age;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
Age(inout float age, float deltaTime)\n{\n age += deltaTime;\n}\nvoid Reap(float
|
|
age, float lifetime, inout bool alive)\n{\n if(age > lifetime) { alive =
|
|
false; }\n}\n\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif (id < nbMax)\r\n\t{\r\n
|
|
Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\n\r\n\t\tif (attributes.alive)\r\n\t\t{\r\n\t\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x20) << 2));\n\t\t\tattributes.age
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x2C) << 2));\n\t\t\t\n\r\n\r\n//
|
|
Initialize built-in needed attributes\r\n#if VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition
|
|
= attributes.position;\r\n#endif\r\n#if HAS_STRIPS\r\n const StripData
|
|
stripData = GetStripDataFromParticleIndex(index, PARTICLE_PER_STRIP_COUNT);\r\n
|
|
InitStripAttributes(index, attributes, stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\tAge(
|
|
/*inout */attributes.age, deltaTime_a);\n\t\t\tReap(attributes.age, attributes.lifetime,
|
|
/*inout */attributes.alive);\n\t\t\t\n\r\n\r\n\t\t\tif (attributes.alive)\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x1 + 0x2C) << 2,asuint(attributes.age));\n\t\t\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tattributeBuffer.Store((index
|
|
* 0x1 + 0x24) << 2,uint(attributes.alive));\n\t\t\t\t\n\r\n#if USE_DEAD_LIST
|
|
&& !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\tattributes.lifetime
|
|
= asfloat(attributeBuffer.Load((index * 0x1 + 0x20) << 2));\n\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\tattributes.age =
|
|
asfloat(attributeBuffer.Load((index * 0x1 + 0x2C) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\tAge( /*inout */attributes.age, deltaTime_a);\n\t\tReap(attributes.age,
|
|
attributes.lifetime, /*inout */attributes.alive);\n\t\t\n\r\n\t\tattributeBuffer.Store((index
|
|
* 0x1 + 0x24) << 2,uint(attributes.alive));\n\t\tattributeBuffer.Store((index
|
|
* 0x1 + 0x2C) << 2,asuint(attributes.age));\n\t\t\n\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Reticula Circular Patterns (When hovering)]Output Particle Mesh'
|
|
source: "Shader \"Hidden/VFX/HUD_Reticula/Reticula Circular Patterns (When hovering)/Output
|
|
Particle Mesh\"\n{\r\n\tSubShader\r\n\t{\r\n\t\tTags { \"Queue\"=\"Transparent+700\"
|
|
\"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha One , Zero One\n\t\tZTest LEqual\n\t\tZWrite Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define
|
|
NB_THREADS_PER_GROUP 64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL
|
|
(0)\n\t\t#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION
|
|
(2)\n\t\t#define VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_ALPHA_CURRENT
|
|
1\n\t\t#define VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEZ_CURRENT
|
|
1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define
|
|
VFX_USE_AXISX_CURRENT 1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTX_CURRENT 1\n\t\t#define VFX_USE_PIVOTY_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTZ_CURRENT 1\n\t\t#define VFX_USE_SIZE_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_COLORMAPPING_DEFAULT 1\n\t\t#define
|
|
IS_TRANSPARENT_PARTICLE 1\n\t\t#define VFX_BLENDMODE_ADD 1\n\t\t#define USE_FLIPBOOK
|
|
1\n\t\t#define VFX_BYPASS_EXPOSURE 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float Alive_d;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float alpha;\n\t\t
|
|
float texIndex;\n\t\t float angleZ;\n\t\t float3 color;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float pivotX;\n\t\t float
|
|
pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t float scaleX;\n\t\t
|
|
float scaleY;\n\t\t float scaleZ;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D
|
|
mainTexture;\n\t\tSamplerState samplermainTexture;\n\t\tfloat4 mainTexture_TexelSize;\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t
|
|
float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t
|
|
float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t
|
|
float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t
|
|
float4 vertexColor : COLOR;\n\t\t\t #endif\n\t\t\t\t#if USE_ALPHA_TEST ||
|
|
USE_FLIPBOOK_INTERPOLATION || VFX_USE_ALPHA_CURRENT\n\t\t\t\t// x: alpha threshold\n\t\t\t\t//
|
|
y: frame blending factor\n\t\t\t\t// z: alpha\n\t\t\t\tnointerpolation float3
|
|
builtInInterpolants : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tnointerpolation
|
|
float2 builtInInterpolants2 : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t \n\t\t\t
|
|
#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3 posWS : TEXCOORD8;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD6;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t#define VFX_VARYING_POSWS
|
|
posWS\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t#if IS_MOTION_VECTORS_PASS\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define SHADERPASS
|
|
SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS
|
|
and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151642(inout float scaleX, inout float scaleY, inout float scaleZ,
|
|
float3 Scale) /*attribute:scale Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t
|
|
scaleZ = Scale.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tfloat3 pos : POSITION;\n\t\t\t\tfloat2 uv : TEXCOORD0;\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t float4 vertexColor : COLOR;\n\t\t\t
|
|
#endif\n\t\t\t\tfloat3 normal : NORMAL;\n\t\t\t\t#if defined(VFX_VARYING_TANGENT)
|
|
|| SHADERGRAPH_HAS_NORMAL\n\t\t\t\tfloat4 tangent : TANGENT;\n\t\t\t\t#endif\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS vert(vs_input i)\n\t\t\t{\n\t\t\t
|
|
VFX_VARYING_PS_INPUTS o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = VFX_GET_INSTANCE_ID(i);\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount
|
|
= 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151642( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
/*inout */attributes.scaleZ, float3(0.140000001, 0.140000001, 0.140000001));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_FDD06EC7( /*inout */attributes.color, float3(0.00537500018, 0.0215000026,
|
|
0.0430000015));\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15( /*inout */attributes.alive,
|
|
(bool)asuint(Alive_d));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_UV.xy = i.uv;\n\t\t\t \n\t\t\t #if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t o.uv1 = i.uv1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t o.uv2 = i.uv2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t o.uv3 = i.uv3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t o.vertexColor = i.vertexColor;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3 size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = i.pos;\n\t\t\t\tfloat4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
vPos = mul(elementToVFX,float4(inputVertexPosition,1.0f)).xyz;\n\t\t\t\tfloat4
|
|
csPos = TransformPositionVFXToClip(vPos);\n\t\t\t\to.VFX_VARYING_POSCS = csPos;\n\t\t\t\t\n\t\t\t\tfloat3
|
|
normalWS = normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,
|
|
i.normal)));\n\t\t\t\t#ifdef VFX_VARYING_NORMAL // TODO Should use inverse
|
|
transpose\n\t\t\t\to.VFX_VARYING_NORMAL = normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = float4(normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,i.tangent.xyz))),i.tangent.w);\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(8, 64);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(0.125, 0.015625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t
|
|
#ifdef VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t float alpha = VFXGetFragmentColor(i).a;\n\t\t\t
|
|
alpha *= VFXGetTextureColor(VFX_SAMPLER(mainTexture),i).a;\t\t\n\t\t\t #endif\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2
|
|
velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) -
|
|
(i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\treturn encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\treturn
|
|
(float4)0;\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH undefined\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos
|
|
: SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv :
|
|
TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2 uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t\tfloat4 uv1 : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV2\n\t\t\t\tfloat4 uv2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV3\n\t\t\t\tfloat4 uv3 : TEXCOORD3;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t\tfloat4 vertexColor : COLOR1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tnointerpolation float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_SOFT_PARTICLE || USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION || USE_EXPOSURE_WEIGHT
|
|
|| WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t// x: inverse soft particles fade
|
|
distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t// z: frame blending factor\n\t\t\t\t//
|
|
w: exposure weight\n\t\t\t\tnointerpolation float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t// x: motion vectors scale X\n\t\t\t\t//
|
|
y: motion vectors scale Y\n\t\t\t\tnointerpolation float2 builtInInterpolants2
|
|
: TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD5;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t\t\tfloat3 normal : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t\t\tfloat4 tangent : TEXCOORD8;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t
|
|
\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
outMotionVector : SV_Target1;\n\t\t#endif\n\t\t\t};\n\t\t\n\t\t#define VFX_VARYING_PS_INPUTS
|
|
ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define VFX_VARYING_COLOR
|
|
color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t#define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t#define VFX_VARYING_UV uv\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.w\n\t\t#endif\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t#endif\n\t\t\n\t\t#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\n\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t#define VFX_VARYING_NORMAL normal\n\t\t#endif\n\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t#define VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
Orient_4(inout float3 axisX, inout float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane
|
|
axes:ZY */\n\t\t\t{\n\t\t\t \n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t
|
|
axisX = viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151642(inout float scaleX, inout float scaleY, inout float scaleZ,
|
|
float3 Scale) /*attribute:scale Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t
|
|
scaleZ = Scale.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tfloat3 pos : POSITION;\n\t\t\t\tfloat2 uv : TEXCOORD0;\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t float4 vertexColor : COLOR;\n\t\t\t
|
|
#endif\n\t\t\t\tfloat3 normal : NORMAL;\n\t\t\t\t#if defined(VFX_VARYING_TANGENT)
|
|
|| SHADERGRAPH_HAS_NORMAL\n\t\t\t\tfloat4 tangent : TANGENT;\n\t\t\t\t#endif\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS vert(vs_input i)\n\t\t\t{\n\t\t\t
|
|
VFX_VARYING_PS_INPUTS o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = VFX_GET_INSTANCE_ID(i);\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount
|
|
= 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tOrient_4(
|
|
/*inout */attributes.axisX, /*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151642( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
/*inout */attributes.scaleZ, float3(0.140000001, 0.140000001, 0.140000001));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_FDD06EC7( /*inout */attributes.color, float3(0.00537500018, 0.0215000026,
|
|
0.0430000015));\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15( /*inout */attributes.alive,
|
|
(bool)asuint(Alive_d));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_UV.xy = i.uv;\n\t\t\t \n\t\t\t #if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t o.uv1 = i.uv1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t o.uv2 = i.uv2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t o.uv3 = i.uv3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t o.vertexColor = i.vertexColor;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3 size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = i.pos;\n\t\t\t\tfloat4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
vPos = mul(elementToVFX,float4(inputVertexPosition,1.0f)).xyz;\n\t\t\t\tfloat4
|
|
csPos = TransformPositionVFXToClip(vPos);\n\t\t\t\to.VFX_VARYING_POSCS = csPos;\n\t\t\t\t\n\t\t\t\tfloat3
|
|
normalWS = normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,
|
|
i.normal)));\n\t\t\t\t#ifdef VFX_VARYING_NORMAL // TODO Should use inverse
|
|
transpose\n\t\t\t\to.VFX_VARYING_NORMAL = normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = float4(normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,i.tangent.xyz))),i.tangent.w);\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(8, 64);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(0.125, 0.015625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = normalize(i.VFX_VARYING_NORMAL * faceMul);\n\t\t\t\t\t\t\tconst
|
|
VFXUVData uvData = GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = normalize(i.VFX_VARYING_TANGENT.xyz);\n\t\t\t\t\t\t\tfloat3 bitangentWS
|
|
= cross(normalWS,tangentWS) * (i.VFX_VARYING_TANGENT.w * faceMul);\n\t\t\t\t\t\t\tfloat3x3
|
|
tbn = float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t
|
|
#if VFX_SHADERGRAPH \n\t\t \n\t\t \n\t\t
|
|
\n\t\t #if HAS_SHADERGRAPH_PARAM_COLOR\n\t\t o.color.rgb
|
|
= OUTSG..rgb;\n\t\t #endif\n\t\t \n\t\t #if
|
|
HAS_SHADERGRAPH_PARAM_ALPHA \n\t\t o.color.a = OUTSG.;\n\t\t
|
|
#endif\n\t\t #else\n\t\t #define VFX_TEXTURE_COLOR VFXGetTextureColor(VFX_SAMPLER(mainTexture),i)\n\t\t
|
|
\n\t\t \t\t\n\t\t \t\tfloat4 color = VFXGetFragmentColor(i);\n\t\t
|
|
\t\t\n\t\t \t\t#ifndef VFX_TEXTURE_COLOR\n\t\t \t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t \t\t#endif\n\t\t
|
|
\t\t\n\t\t \t\t#if VFX_COLORMAPPING_DEFAULT\n\t\t \t\t\to.color
|
|
= color * VFX_TEXTURE_COLOR;\n\t\t \t\t#endif\n\t\t \t\t\n\t\t
|
|
\t\t#if VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t \t\t\t\n\t\t
|
|
\t\t\to.color = SampleGradient(gradient, VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t
|
|
\t\t#endif\n\t\t \t\t\n\t\t \t\t\n\t\t #endif\n\t\t\n\t\t\t\to.color
|
|
= VFXApplyPreExposure(o.color, i);\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t\t\to.color = VFXTransformFinalColor(o.color);\n\t\t\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t\n\t\t\t\t\t\tfloat2 velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w)
|
|
- (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\tVFXEncodeMotionVector(velocity * 0.5f,
|
|
encodedMotionVector);\n\t\t\t\t\t\t\n\t\t\t\to.outMotionVector = encodedMotionVector;\n\t\t\t\to.outMotionVector.a
|
|
= o.color.a < i.VFX_VARYING_ALPHATHRESHOLD ? 0.0f : 1.0f; //Independant clipping
|
|
for motion vector pass\n\t\t#endif\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[Reticula Circular Patterns (When hovering)]Output Particle Mesh'
|
|
source: "Shader \"Hidden/VFX/HUD_Reticula/Reticula Circular Patterns (When hovering)/Output
|
|
Particle Mesh\"\n{\r\n\tSubShader\r\n\t{\r\n\t\tTags { \"Queue\"=\"Transparent+700\"
|
|
\"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha One , Zero One\n\t\tZTest LEqual\n\t\tZWrite Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define
|
|
NB_THREADS_PER_GROUP 64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL
|
|
(0)\n\t\t#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION
|
|
(2)\n\t\t#define VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_ALPHA_CURRENT
|
|
1\n\t\t#define VFX_USE_TEXINDEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEZ_CURRENT
|
|
1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define
|
|
VFX_USE_AXISX_CURRENT 1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTX_CURRENT 1\n\t\t#define VFX_USE_PIVOTY_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTZ_CURRENT 1\n\t\t#define VFX_USE_SIZE_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT 1\n\t\t#define
|
|
VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_USE_PARTICLEID_CURRENT 1\n\t\t#define
|
|
VFX_COLORMAPPING_DEFAULT 1\n\t\t#define IS_TRANSPARENT_PARTICLE 1\n\t\t#define
|
|
VFX_BLENDMODE_ADD 1\n\t\t#define USE_FLIPBOOK 1\n\t\t#define VFX_BYPASS_EXPOSURE
|
|
1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float uniform_b;\n\t\t float Alive_e;\n\t\t uint2 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float alpha;\n\t\t
|
|
float texIndex;\n\t\t float angleZ;\n\t\t float3 color;\n\t\t bool
|
|
alive;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float angleX;\n\t\t float angleY;\n\t\t float pivotX;\n\t\t float
|
|
pivotY;\n\t\t float pivotZ;\n\t\t float size;\n\t\t float scaleX;\n\t\t
|
|
float scaleY;\n\t\t float scaleZ;\n\t\t uint particleId;\n\t\t};\n\t\t\n\t\tstruct
|
|
SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\tTexture2D mainTexture;\n\t\tSamplerState
|
|
samplermainTexture;\n\t\tfloat4 mainTexture_TexelSize;\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2
|
|
uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t
|
|
float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t
|
|
float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t
|
|
float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t #if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t
|
|
float4 vertexColor : COLOR;\n\t\t\t #endif\n\t\t\t\t#if USE_ALPHA_TEST ||
|
|
USE_FLIPBOOK_INTERPOLATION || VFX_USE_ALPHA_CURRENT\n\t\t\t\t// x: alpha threshold\n\t\t\t\t//
|
|
y: frame blending factor\n\t\t\t\t// z: alpha\n\t\t\t\tnointerpolation float3
|
|
builtInInterpolants : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t//
|
|
x: motion vectors scale X\n\t\t\t\t// y: motion vectors scale Y\n\t\t\t\tnointerpolation
|
|
float2 builtInInterpolants2 : TEXCOORD5;\n\t\t\t\t#endif\n\t\t\t \n\t\t\t
|
|
#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3 posWS : TEXCOORD8;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD6;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t
|
|
\n\t\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.z\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t#define VFX_VARYING_FRAMEBLEND builtInInterpolants.y\n\t\t\t#define
|
|
VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy\n\t\t\t#define VFX_VARYING_UV
|
|
uv\n\t\t\t\n\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t#define VFX_VARYING_POSWS
|
|
posWS\n\t\t\t#endif\n\t\t\t\n\t\t\t#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t\t#endif\n\t\t\t\n\t\t\t#if IS_MOTION_VECTORS_PASS\n\t\t\t#define
|
|
SHADERPASS SHADERPASS_MOTION_VECTORS\n\t\t\t#else\n\t\t\t#define SHADERPASS
|
|
SHADERPASS_DEPTH_ONLY\n\t\t\t#endif\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS
|
|
and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_CA10063D(inout float texIndex, float TexIndex) /*attribute:texIndex
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t
|
|
texIndex = TexIndex;\n\t\t\t}\n\t\t\tvoid Orient_4(inout float3 axisX, inout
|
|
float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane axes:ZY */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t axisX =
|
|
viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151642(inout float scaleX, inout float scaleY, inout float scaleZ,
|
|
float3 Scale) /*attribute:scale Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t
|
|
scaleZ = Scale.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tfloat3 pos : POSITION;\n\t\t\t\tfloat2 uv : TEXCOORD0;\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t float4 vertexColor : COLOR;\n\t\t\t
|
|
#endif\n\t\t\t\tfloat3 normal : NORMAL;\n\t\t\t\t#if defined(VFX_VARYING_TANGENT)
|
|
|| SHADERGRAPH_HAS_NORMAL\n\t\t\t\tfloat4 tangent : TANGENT;\n\t\t\t\t#endif\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS vert(vs_input i)\n\t\t\t{\n\t\t\t
|
|
VFX_VARYING_PS_INPUTS o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = VFX_GET_INSTANCE_ID(i);\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount
|
|
= 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.particleId
|
|
= (attributeBuffer.Load((index * 0x1 + 0x28) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.particleId = (attributeBuffer.Load((index
|
|
* 0x1 + 0x28) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
uint tmp_z = (uint)attributes.texIndex;\n\t\t\t\t uint tmp_ba = tmp_z ^
|
|
asuint(uniform_b);\n\t\t\t\t uint tmp_bb = attributes.particleId ^ tmp_ba;\n\t\t\t\t
|
|
float tmp_bc = FixedRand(tmp_bb);\n\t\t\t\t SetAttribute_CA10063D( /*inout
|
|
*/attributes.texIndex, tmp_bc);\n\t\t\t\t}\n\t\t\t\tOrient_4( /*inout */attributes.axisX,
|
|
/*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151642( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
/*inout */attributes.scaleZ, float3(0.159999996, 0.159999996, 0.159999996));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_FDD06EC7( /*inout */attributes.color, float3(0.00537500018, 0.0215000026,
|
|
0.0430000015));\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15( /*inout */attributes.alive,
|
|
(bool)asuint(Alive_e));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_UV.xy = i.uv;\n\t\t\t \n\t\t\t #if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t o.uv1 = i.uv1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t o.uv2 = i.uv2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t o.uv3 = i.uv3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t o.vertexColor = i.vertexColor;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3 size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = i.pos;\n\t\t\t\tfloat4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
vPos = mul(elementToVFX,float4(inputVertexPosition,1.0f)).xyz;\n\t\t\t\tfloat4
|
|
csPos = TransformPositionVFXToClip(vPos);\n\t\t\t\to.VFX_VARYING_POSCS = csPos;\n\t\t\t\t\n\t\t\t\tfloat3
|
|
normalWS = normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,
|
|
i.normal)));\n\t\t\t\t#ifdef VFX_VARYING_NORMAL // TODO Should use inverse
|
|
transpose\n\t\t\t\to.VFX_VARYING_NORMAL = normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = float4(normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,i.tangent.xyz))),i.tangent.w);\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(8, 64);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(0.125, 0.015625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t
|
|
#ifdef VFX_SHADERGRAPH\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t
|
|
float alpha = OUTSG.;\n\t\t\t #else\n\t\t\t float alpha = VFXGetFragmentColor(i).a;\n\t\t\t
|
|
alpha *= VFXGetTextureColor(VFX_SAMPLER(mainTexture),i).a;\t\t\n\t\t\t #endif\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t\t\n\t\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat2
|
|
velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w) -
|
|
(i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\t\tVFXEncodeMotionVector(velocity *
|
|
0.5f, encodedMotionVector);\n\t\t\t\t\t\t\t\n\t\t\t\t\treturn encodedMotionVector;\n\t\t\t\t#elif
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\t\treturn
|
|
(float4)0;\n\t\t\t\t#else\n\t\t\t\t\t#error VFX_PASSDEPTH undefined\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos
|
|
: SV_POSITION;\n\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION\n\t\t\t\tfloat4 uv :
|
|
TEXCOORD0;\n\t\t\t\t#else\n\t\t\t\tfloat2 uv : TEXCOORD0;\t\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t\tfloat4 uv1 : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV2\n\t\t\t\tfloat4 uv2 : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_UV3\n\t\t\t\tfloat4 uv3 : TEXCOORD3;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t\tfloat4 vertexColor : COLOR1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tnointerpolation float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_SOFT_PARTICLE || USE_ALPHA_TEST || USE_FLIPBOOK_INTERPOLATION || USE_EXPOSURE_WEIGHT
|
|
|| WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t// x: inverse soft particles fade
|
|
distance\n\t\t\t\t// y: alpha threshold\n\t\t\t\t// z: frame blending factor\n\t\t\t\t//
|
|
w: exposure weight\n\t\t\t\tnointerpolation float4 builtInInterpolants : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
USE_FLIPBOOK_MOTIONVECTORS\n\t\t\t\t// x: motion vectors scale X\n\t\t\t\t//
|
|
y: motion vectors scale Y\n\t\t\t\tnointerpolation float2 builtInInterpolants2
|
|
: TEXCOORD2;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD4;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
cPosPrevious : TEXCOORD5;\n\t\t\t\tfloat4 cPosNonJiterred : TEXCOORD6;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t\t\tfloat3 normal : TEXCOORD7;\n\t\t\t\t#endif\n\t\t\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t\t\tfloat4 tangent : TEXCOORD8;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t
|
|
\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\tfloat4
|
|
outMotionVector : SV_Target1;\n\t\t#endif\n\t\t\t};\n\t\t\n\t\t#define VFX_VARYING_PS_INPUTS
|
|
ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define VFX_VARYING_COLOR
|
|
color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
builtInInterpolants.x\n\t\t#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#define
|
|
VFX_VARYING_FRAMEBLEND builtInInterpolants.z\n\t\t#define VFX_VARYING_MOTIONVECTORSCALE
|
|
builtInInterpolants2.xy\n\t\t#define VFX_VARYING_UV uv\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.w\n\t\t#endif\n\t\t#if WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t#define
|
|
VFX_VARYING_VELOCITY_CPOS cPosNonJiterred\n\t\t#define VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
cPosPrevious\n\t\t#endif\n\t\t\n\t\t#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\n\t\t#if
|
|
SHADERGRAPH_NEEDS_NORMAL_FORWARD\n\t\t#define VFX_VARYING_NORMAL normal\n\t\t#endif\n\t\t#if
|
|
SHADERGRAPH_NEEDS_TANGENT_FORWARD\n\t\t#define VFX_VARYING_TANGENT tangent\n\t\t#endif\n\t\t\t\t\n\t\t\t#if
|
|
!(defined(VFX_VARYING_PS_INPUTS) && defined(VFX_VARYING_POSCS))\n\t\t\t#error
|
|
VFX_VARYING_PS_INPUTS, VFX_VARYING_POSCS and VFX_VARYING_UV must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_CA10063D(inout float texIndex, float TexIndex) /*attribute:texIndex
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t
|
|
texIndex = TexIndex;\n\t\t\t}\n\t\t\tvoid Orient_4(inout float3 axisX, inout
|
|
float3 axisY, inout float3 axisZ) /*mode:FaceCameraPlane axes:ZY */\n\t\t\t{\n\t\t\t
|
|
\n\t\t\t float3x3 viewRot = GetVFXToViewRotMatrix();\n\t\t\t axisX =
|
|
viewRot[0].xyz;\n\t\t\t axisY = viewRot[1].xyz;\n\t\t\t #if VFX_LOCAL_SPACE
|
|
// Need to remove potential scale in local transform\n\t\t\t axisX = normalize(axisX);\n\t\t\t
|
|
axisY = normalize(axisY);\n\t\t\t axisZ = cross(axisX,axisY);\n\t\t\t
|
|
#else\n\t\t\t axisZ = -viewRot[2].xyz;\n\t\t\t #endif\n\t\t\t \n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_D5151642(inout float scaleX, inout float scaleY, inout float scaleZ,
|
|
float3 Scale) /*attribute:scale Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t scaleX = Scale.x;\n\t\t\t scaleY = Scale.y;\n\t\t\t
|
|
scaleZ = Scale.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_FDD06EC7(inout float3 color,
|
|
float3 Color) /*attribute:color Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t color = Color;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tfloat3 pos : POSITION;\n\t\t\t\tfloat2 uv : TEXCOORD0;\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV1\n\t\t\t float4 uv1 : TEXCOORD1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t float4 uv2 : TEXCOORD2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t float4 uv3 : TEXCOORD3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t float4 vertexColor : COLOR;\n\t\t\t
|
|
#endif\n\t\t\t\tfloat3 normal : NORMAL;\n\t\t\t\t#if defined(VFX_VARYING_TANGENT)
|
|
|| SHADERGRAPH_HAS_NORMAL\n\t\t\t\tfloat4 tangent : TANGENT;\n\t\t\t\t#endif\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tVFX_VARYING_PS_INPUTS vert(vs_input i)\n\t\t\t{\n\t\t\t
|
|
VFX_VARYING_PS_INPUTS o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = VFX_GET_INSTANCE_ID(i);\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint deadCount
|
|
= 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount = deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif
|
|
(index >= asuint(nbMax) - deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn;
|
|
// cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ = asfloat(attributeBuffer.Load((index
|
|
* 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotX = (float)0;\n\t\t\t\t\t\tattributes.pivotY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotZ = (float)0;\n\t\t\t\t\t\tattributes.size
|
|
= (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX = (float)1;\n\t\t\t\t\t\tattributes.scaleY
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleZ = (float)1;\n\t\t\t\t\t\tattributes.particleId
|
|
= (attributeBuffer.Load((index * 0x1 + 0x28) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (attributeBuffer.Load((index * 0x1 + 0x24) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
!HAS_STRIPS\n\t\t\t\t\t\tif (!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x8 + 0x0) << 2));\n\t\t\t\t\t\tattributes.alpha
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x3) << 2));\n\t\t\t\t\t\tattributes.texIndex
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x4) << 2));\n\t\t\t\t\t\tattributes.angleZ
|
|
= asfloat(attributeBuffer.Load((index * 0x8 + 0x5) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.axisX = float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY
|
|
= float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ = float3(0, 0, 1);\n\t\t\t\t\t\tattributes.angleX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleY = (float)0;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.particleId = (attributeBuffer.Load((index
|
|
* 0x1 + 0x28) << 2));\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
uint tmp_z = (uint)attributes.texIndex;\n\t\t\t\t uint tmp_ba = tmp_z ^
|
|
asuint(uniform_b);\n\t\t\t\t uint tmp_bb = attributes.particleId ^ tmp_ba;\n\t\t\t\t
|
|
float tmp_bc = FixedRand(tmp_bb);\n\t\t\t\t SetAttribute_CA10063D( /*inout
|
|
*/attributes.texIndex, tmp_bc);\n\t\t\t\t}\n\t\t\t\tOrient_4( /*inout */attributes.axisX,
|
|
/*inout */attributes.axisY, /*inout */attributes.axisZ);\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_D5151642( /*inout */attributes.scaleX, /*inout */attributes.scaleY,
|
|
/*inout */attributes.scaleZ, float3(0.159999996, 0.159999996, 0.159999996));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_FDD06EC7( /*inout */attributes.color, float3(0.00537500018, 0.0215000026,
|
|
0.0430000015));\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15( /*inout */attributes.alive,
|
|
(bool)asuint(Alive_e));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif (!attributes.alive)\n\t\t\t\t\treturn
|
|
o;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_UV.xy = i.uv;\n\t\t\t \n\t\t\t #if
|
|
VFX_SHADERGRAPH_HAS_UV1\n\t\t\t o.uv1 = i.uv1;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV2\n\t\t\t o.uv2 = i.uv2;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_UV3\n\t\t\t o.uv3 = i.uv3;\n\t\t\t #endif\n\t\t\t
|
|
#if VFX_SHADERGRAPH_HAS_COLOR\n\t\t\t o.vertexColor = i.vertexColor;\n\t\t\t
|
|
#endif\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat3 size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfloat3
|
|
inputVertexPosition = i.pos;\n\t\t\t\tfloat4x4 elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\t\t\n\t\t\t\tfloat3
|
|
vPos = mul(elementToVFX,float4(inputVertexPosition,1.0f)).xyz;\n\t\t\t\tfloat4
|
|
csPos = TransformPositionVFXToClip(vPos);\n\t\t\t\to.VFX_VARYING_POSCS = csPos;\n\t\t\t\t\n\t\t\t\tfloat3
|
|
normalWS = normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,
|
|
i.normal)));\n\t\t\t\t#ifdef VFX_VARYING_NORMAL // TODO Should use inverse
|
|
transpose\n\t\t\t\to.VFX_VARYING_NORMAL = normalWS;\n\t\t\t\t#endif\n\t\t\t\t#ifdef
|
|
VFX_VARYING_TANGENT\n\t\t\t\to.VFX_VARYING_TANGENT = float4(normalize(TransformDirectionVFXToWorld(mul((float3x3)elementToVFX,i.tangent.xyz))),i.tangent.w);\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_VELOCITY_CPOS) && defined(VFX_VARYING_VELOCITY_CPOS_PREVIOUS)\n\t\t\t\t\t\tfloat4x4
|
|
previousElementToVFX = (float4x4)0;\n\t\t\t\t\t\tpreviousElementToVFX[3] =
|
|
float4(0,0,0,1);\n\t\t\t\t\t\t\n\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\tfor (int
|
|
itIndexMatrixRow = 0; itIndexMatrixRow < 3; ++itIndexMatrixRow)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUNITY_UNROLL\n\t\t\t\t\t\t\tfor
|
|
(int itIndexMatrixCol = 0; itIndexMatrixCol < 4; ++itIndexMatrixCol)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuint
|
|
itIndexMatrix = itIndexMatrixCol * 4 + itIndexMatrixRow;\n\t\t\t\t\t\t\t\tuint
|
|
read = elementToVFXBufferPrevious.Load((index * 16 + itIndexMatrix) << 2);\n\t\t\t\t\t\t\t\tpreviousElementToVFX[itIndexMatrixRow][itIndexMatrixCol]
|
|
= asfloat(read);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tuint
|
|
previousFrameIndex = elementToVFXBufferPrevious.Load((index * 16 + 15) << 2);\n\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= o.VFX_VARYING_VELOCITY_CPOS_PREVIOUS = float4(0.0f, 0.0f, 0.0f, 1.0f);\n\t\t\t\t\t\tif
|
|
(asuint(currentFrameIndex) - previousFrameIndex == 1u)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat3
|
|
oldvPos = mul(previousElementToVFX,float4(inputVertexPosition, 1.0f)).xyz;\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS_PREVIOUS
|
|
= TransformPositionVFXToPreviousClip(oldvPos);\n\t\t\t\t\t\t\to.VFX_VARYING_VELOCITY_CPOS
|
|
= TransformPositionVFXToNonJitteredClip(vPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_USE_COLOR_CURRENT && defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR
|
|
= attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if VFX_USE_ALPHA_CURRENT
|
|
&& defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA = attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if
|
|
USE_FLIPBOOK && defined(VFX_VARYING_UV)\n\t\t\t\t\t\tfloat2 flipBookSize =
|
|
(float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t flipBookSize =
|
|
float2(8, 64);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tfloat2 invFlipBookSize
|
|
= (float2)0;\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\t invFlipBookSize
|
|
= float2(0.125, 0.015625);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tVFXUVData
|
|
uvData = GetUVData(flipBookSize, invFlipBookSize, o.VFX_VARYING_UV.xy, attributes.texIndex);\n\t\t\t\t\t\to.VFX_VARYING_UV.xy
|
|
= uvData.uvs.xy;\n\t\t\t\t\t\t#if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_UV)
|
|
&& defined (VFX_VARYING_FRAMEBLEND)\n\t\t\t\t\t\to.VFX_VARYING_UV.zw = uvData.uvs.zw;\n\t\t\t\t\t\to.VFX_VARYING_FRAMEBLEND
|
|
= uvData.blend;\n\t\t\t\t\t\t#if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_MOTIONVECTORSCALE
|
|
= motionVectorScale * invFlipBookSize;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
|
|
\n\t\t\t \n\t\t\t\t\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\t\t\t#ifdef
|
|
VFX_VARYING_NORMAL\n\t\t\t\t\t\t\t#if USE_DOUBLE_SIDED\n\t\t\t\t\t\t\tconst
|
|
float faceMul = frontFace ? 1.0f : -1.0f;\n\t\t\t\t\t\t\t#else\n\t\t\t\t\t\t\tconst
|
|
float faceMul = 1.0f;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfloat3
|
|
normalWS = normalize(i.VFX_VARYING_NORMAL * faceMul);\n\t\t\t\t\t\t\tconst
|
|
VFXUVData uvData = GetUVData(i);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_TANGENT\n\t\t\t\t\t\t\tfloat3
|
|
tangentWS = normalize(i.VFX_VARYING_TANGENT.xyz);\n\t\t\t\t\t\t\tfloat3 bitangentWS
|
|
= cross(normalWS,tangentWS) * (i.VFX_VARYING_TANGENT.w * faceMul);\n\t\t\t\t\t\t\tfloat3x3
|
|
tbn = float3x3(tangentWS,bitangentWS,normalWS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t#if
|
|
USE_NORMAL_MAP\n\t\t\t\t\t\t\tfloat3 n = SampleNormalMap(VFX_SAMPLER(normalMap),uvData);\n\t\t\t\t\t\t\tfloat
|
|
normalScale = 1.0f;\n\t\t\t\t\t\t\t#ifdef VFX_VARYING_NORMALSCALE\n\t\t\t\t\t\t\tnormalScale
|
|
= i.VFX_VARYING_NORMALSCALE;\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\tnormalWS
|
|
= normalize(lerp(normalWS,mul(n,tbn),normalScale));\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t
|
|
#if VFX_SHADERGRAPH \n\t\t \n\t\t \n\t\t
|
|
\n\t\t #if HAS_SHADERGRAPH_PARAM_COLOR\n\t\t o.color.rgb
|
|
= OUTSG..rgb;\n\t\t #endif\n\t\t \n\t\t #if
|
|
HAS_SHADERGRAPH_PARAM_ALPHA \n\t\t o.color.a = OUTSG.;\n\t\t
|
|
#endif\n\t\t #else\n\t\t #define VFX_TEXTURE_COLOR VFXGetTextureColor(VFX_SAMPLER(mainTexture),i)\n\t\t
|
|
\n\t\t \t\t\n\t\t \t\tfloat4 color = VFXGetFragmentColor(i);\n\t\t
|
|
\t\t\n\t\t \t\t#ifndef VFX_TEXTURE_COLOR\n\t\t \t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t \t\t#endif\n\t\t
|
|
\t\t\n\t\t \t\t#if VFX_COLORMAPPING_DEFAULT\n\t\t \t\t\to.color
|
|
= color * VFX_TEXTURE_COLOR;\n\t\t \t\t#endif\n\t\t \t\t\n\t\t
|
|
\t\t#if VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t \t\t\t\n\t\t
|
|
\t\t\to.color = SampleGradient(gradient, VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t
|
|
\t\t#endif\n\t\t \t\t\n\t\t \t\t\n\t\t #endif\n\t\t\n\t\t\t\to.color
|
|
= VFXApplyPreExposure(o.color, i);\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t\t\to.color = VFXTransformFinalColor(o.color);\n\t\t\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD\n\t\t\t\t\n\t\t\t\t\t\tfloat2 velocity = (i.VFX_VARYING_VELOCITY_CPOS.xy/i.VFX_VARYING_VELOCITY_CPOS.w)
|
|
- (i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.xy/i.VFX_VARYING_VELOCITY_CPOS_PREVIOUS.w);\n\t\t\t\t\t\t#if
|
|
UNITY_UV_STARTS_AT_TOP\n\t\t\t\t\t\t\tvelocity.y = -velocity.y;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfloat4
|
|
encodedMotionVector = 0.0f;\n\t\t\t\t\t\tVFXEncodeMotionVector(velocity * 0.5f,
|
|
encodedMotionVector);\n\t\t\t\t\t\t\n\t\t\t\to.outMotionVector = encodedMotionVector;\n\t\t\t\to.outMotionVector.a
|
|
= o.color.a < i.VFX_VARYING_ALPHATHRESHOLD ? 0.0f : 1.0f; //Independant clipping
|
|
for motion vector pass\n\t\t#endif\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[CrossHair]Initialize Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_LOCAL_SPACE
|
|
1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n float3 position;\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define
|
|
USE_DEAD_LIST (VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer
|
|
attributeBuffer;\r\nByteAddressBuffer sourceAttributeBuffer;\r\n\r\nCBUFFER_START(initParams)\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n uint nbSpawned;\t\t\t\t\t// Numbers of particle
|
|
spawned\r\n uint spawnIndex;\t\t\t\t// Index of the first particle spawned\r\n
|
|
uint dispatchWidth;\r\n#else\r\n uint offsetInAdditionalOutput;\r\n\tuint
|
|
nbMax;\r\n#endif\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#if USE_DEAD_LIST\r\nRWStructuredBuffer<uint>
|
|
deadListIn;\r\nByteAddressBuffer deadListCount; // This is bad to use a SRV
|
|
to fetch deadList count but Unity API currently prevent from copying to CB\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\nStructuredBuffer<uint> eventList;\r\nByteAddressBuffer
|
|
inputAdditional;\r\n#endif\r\n\r\n#if HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nvoid
|
|
SetAttribute_CAC29747(inout float3 position, float3 Position) /*attribute:position
|
|
Composition:Overwrite Source:Slot Random:Off channels:XYZ */\n{\n position
|
|
= Position;\n}\n\n\r\n\r\n#if HAS_STRIPS\r\nbool GetParticleIndex(inout uint
|
|
particleIndex, uint stripIndex)\r\n{\r\n\tuint relativeIndex;\r\n\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), 1, relativeIndex);\r\n\tif (relativeIndex >= PARTICLE_PER_STRIP_COUNT)
|
|
// strip is full\r\n\t{\r\n\t\tInterlockedAdd(STRIP_DATA(STRIP_NEXT_INDEX,
|
|
stripIndex), -1); // Remove previous increment\r\n\t\treturn false;\r\n\t}\r\n\r\n\tparticleIndex
|
|
= stripIndex * PARTICLE_PER_STRIP_COUNT + ((STRIP_DATA(STRIP_FIRST_INDEX, stripIndex)
|
|
+ relativeIndex) % PARTICLE_PER_STRIP_COUNT);\r\n return true;\r\n}\r\n#endif\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n uint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP;\r\n#if
|
|
!VFX_USE_SPAWNER_FROM_GPU\r\n id += groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n#endif\r\n\r\n#if
|
|
VFX_USE_SPAWNER_FROM_GPU\r\n uint maxThreadId = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 0) << 2);\r\n uint currentSpawnIndex = inputAdditional.Load((offsetInAdditionalOutput
|
|
* 2 + 1) << 2) - maxThreadId;\r\n#else\r\n uint maxThreadId = nbSpawned;\r\n
|
|
uint currentSpawnIndex = spawnIndex;\r\n#endif\r\n\r\n#if USE_DEAD_LIST\r\n
|
|
maxThreadId = min(maxThreadId, deadListCount.Load(0x0));\r\n#elif VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
maxThreadId = min(maxThreadId, nbMax); //otherwise, nbSpawned already clamped
|
|
on CPU\r\n#endif\r\n\r\n if (id < maxThreadId)\r\n {\r\n#if VFX_USE_SPAWNER_FROM_GPU\r\n
|
|
int sourceIndex = eventList[id];\r\n#endif\r\n\t\tuint particleIndex = id +
|
|
currentSpawnIndex;\r\n\t\t\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n int
|
|
sourceIndex = 0;\n /*//Loop with 1 iteration generate a wrong IL Assembly
|
|
(and actually, useless code)\n uint currentSumSpawnCount = 0u;\n
|
|
for (sourceIndex=0; sourceIndex<1; sourceIndex++)\n {\n currentSumSpawnCount
|
|
+= uint(asfloat(sourceAttributeBuffer.Load((sourceIndex * 0x1 + 0x0) << 2)));\n
|
|
if (id < currentSumSpawnCount)\n {\n break;\n
|
|
}\n }\n */\n \n\r\n#endif\r\n\r\n\t\tAttributes attributes
|
|
= (Attributes)0;\r\n\t\tSourceAttributes sourceAttributes = (SourceAttributes)0;\r\n\t\t\r\n
|
|
attributes.position = float3(0, 0, 0);\n \n\r\n#if VFX_USE_PARTICLEID_CURRENT\r\n
|
|
attributes.particleId = particleIndex;\r\n#endif\r\n#if VFX_USE_SEED_CURRENT\r\n
|
|
attributes.seed = WangHash(particleIndex ^ systemSeed);\r\n#endif\r\n#if VFX_USE_SPAWNINDEX_CURRENT\r\n
|
|
attributes.spawnIndex = id;\r\n#endif\r\n#if HAS_STRIPS\r\n#if !VFX_USE_SPAWNER_FROM_GPU\r\n\t\t\r\n#else\r\n
|
|
uint stripIndex = sourceIndex;\r\n#endif\r\n\t\tstripIndex = min(stripIndex,
|
|
STRIP_COUNT);\r\n\r\n if (!GetParticleIndex(particleIndex, stripIndex))\r\n
|
|
return;\r\n\r\n const StripData stripData = GetStripDataFromStripIndex(stripIndex,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n\t\tInitStripAttributes(particleIndex, attributes,
|
|
stripData);\r\n\t\t// TODO Change seed to be sure we're deterministic on random
|
|
with strip\r\n#endif\r\n \r\n {\n SetAttribute_CAC29747(
|
|
/*inout */attributes.position, float3(0, 0, 0.0300099999));\n }\n
|
|
\n\r\n\t\t\r\n#if VFX_USE_ALIVE_CURRENT\r\n if (attributes.alive)\r\n#endif
|
|
\r\n {\r\n#if USE_DEAD_LIST\r\n\t uint deadIndex = deadListIn.DecrementCounter();\r\n
|
|
uint index = deadListIn[deadIndex];\r\n#else\r\n uint index = particleIndex;\r\n#endif\r\n
|
|
attributeBuffer.Store3((index * 0x4 + 0x0) << 2,asuint(attributes.position));\n
|
|
\n\r\n }\r\n }\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[CrossHair]Update Particle'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_HAS_INDIRECT_DRAW 1\n#define VFX_LOCAL_SPACE
|
|
1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\n\nstruct
|
|
Attributes\n{\n};\n\nstruct SourceAttributes\n{\n};\n\n\n\r\n\r\n#define USE_DEAD_LIST
|
|
(VFX_USE_ALIVE_CURRENT && !HAS_STRIPS)\r\n\r\nRWByteAddressBuffer attributeBuffer;\r\n\r\n#if
|
|
USE_DEAD_LIST\r\nRWStructuredBuffer<uint> deadListOut;\r\n#endif\r\n\r\n#if
|
|
VFX_HAS_INDIRECT_DRAW\r\nRWStructuredBuffer<uint> indirectBuffer;\r\n#endif\r\n\r\n#if
|
|
HAS_STRIPS\r\nRWBuffer<uint> stripDataBuffer;\r\n#endif\r\n\r\n#if VFX_USE_STRIPALIVE_CURRENT\r\nBuffer<uint>
|
|
attachedStripDataBuffer;\r\n#endif\r\n\r\nCBUFFER_START(updateParams)\r\n
|
|
uint nbMax;\r\n\tuint dispatchWidth;\r\n\tuint systemSeed;\r\nCBUFFER_END\r\n\r\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\n\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid
|
|
CSMain(uint3 groupId : SV_GroupID,\r\n uint3 groupThreadId
|
|
: SV_GroupThreadID)\r\n{\r\n\tuint id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP
|
|
+ groupId.y * dispatchWidth * NB_THREADS_PER_GROUP;\r\n\tuint index = id;\r\n\tif
|
|
(id < nbMax)\r\n\t{\r\n Attributes attributes = (Attributes)0;\r\n\t\tSourceAttributes
|
|
sourceAttributes = (SourceAttributes)0;\r\n\r\n#if VFX_USE_ALIVE_CURRENT\r\n\t\t\r\n\t\tif
|
|
(attributes.alive)\r\n\t\t{\r\n\t\t\t\r\n\r\n// Initialize built-in needed
|
|
attributes\r\n#if VFX_USE_OLDPOSITION_CURRENT\r\n\t\t\tattributes.oldPosition
|
|
= attributes.position;\r\n#endif\r\n#if HAS_STRIPS\r\n const StripData
|
|
stripData = GetStripDataFromParticleIndex(index, PARTICLE_PER_STRIP_COUNT);\r\n
|
|
InitStripAttributes(index, attributes, stripData);\r\n#endif\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\tif
|
|
(attributes.alive)\r\n\t\t\t{\r\n\t\t\t\t\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\t\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n\r\n#if HAS_STRIPS\t\t\t\r\n\t\t\t\tuint relativeIndexInStrip
|
|
= GetRelativeIndex(index, stripData);\r\n\t\t\t\tInterlockedMin(STRIP_DATA(STRIP_MIN_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n\t\t\t\tInterlockedMax(STRIP_DATA(STRIP_MAX_ALIVE,
|
|
stripData.stripIndex), relativeIndexInStrip);\r\n#endif\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t\r\n#if
|
|
USE_DEAD_LIST && !VFX_USE_STRIPALIVE_CURRENT\r\n\t\t\t\tuint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n#endif\r\n\t\t\t}\r\n\t\t}\r\n#if USE_DEAD_LIST && VFX_USE_STRIPALIVE_CURRENT\r\n
|
|
else if (attributes.stripAlive)\r\n {\r\n if (STRIP_DATA_X(attachedStripDataBuffer,
|
|
STRIP_MIN_ALIVE, index) == ~1) // Attached strip is no longer alive, recycle
|
|
the particle \r\n {\r\n uint deadIndex = deadListOut.IncrementCounter();\r\n\t\t\t\tdeadListOut[deadIndex]
|
|
= index;\r\n attributes.stripAlive = false;\r\n
|
|
\r\n } \r\n }\r\n#endif\r\n#else\r\n\t\t\r\n\t\t\r\n#if
|
|
VFX_USE_OLDPOSITION_CURRENT\r\n\t\tattributes.oldPosition = attributes.position;\r\n#endif\r\n#if
|
|
HAS_STRIPS\r\n const StripData stripData = GetStripDataFromParticleIndex(index,
|
|
PARTICLE_PER_STRIP_COUNT);\r\n InitStripAttributes(index, attributes,
|
|
stripData);\r\n#endif\r\n\t\t\r\n\t\t\r\n\t\t\r\n#if VFX_HAS_INDIRECT_DRAW\r\n
|
|
uint indirectIndex = indirectBuffer.IncrementCounter();\r\n\t\tindirectBuffer[indirectIndex]
|
|
= index;\r\n#endif\r\n#endif\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[CrossHair]Output Particle Line'
|
|
source: "Shader \"Hidden/VFX/HUD_Reticula/CrossHair/Output Particle Line\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tTags
|
|
{ \"Queue\"=\"Transparent+700\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"
|
|
}\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha OneMinusSrcAlpha , Zero OneMinusSrcAlpha\n\t\tZTest LEqual\n\t\tZWrite
|
|
Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define NB_THREADS_PER_GROUP
|
|
64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL (0)\n\t\t#define
|
|
VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION (2)\n\t\t#define
|
|
VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define
|
|
VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_AXISX_CURRENT
|
|
1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT
|
|
1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_USE_TARGETPOSITION_CURRENT
|
|
1\n\t\t#define VFX_COLORMAPPING_DEFAULT 1\n\t\t#define IS_TRANSPARENT_PARTICLE
|
|
1\n\t\t#define VFX_BLENDMODE_ALPHA 1\n\t\t#define VFX_HAS_INDIRECT_DRAW 1\n\t\t#define
|
|
VFX_BYPASS_EXPOSURE 1\n\t\t#define TARGET_FROM_ATTRIBUTES 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float Alive_c;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float3 color;\n\t\t
|
|
float alpha;\n\t\t bool alive;\n\t\t float pivotX;\n\t\t float pivotY;\n\t\t
|
|
float pivotZ;\n\t\t float angleX;\n\t\t float angleY;\n\t\t float
|
|
angleZ;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float size;\n\t\t float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t
|
|
float3 targetPosition;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_ALPHA_TEST || VFX_USE_ALPHA_CURRENT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants : TEXCOORD0;\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.y\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t\t\t\t\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_3278B229(inout float size,
|
|
float Size) /*attribute:size Composition:Overwrite Source:Slot Random:Off channels:X
|
|
*/\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_65DEC940( /*inout */attributes.pivotX, /*inout */attributes.pivotY,
|
|
/*inout */attributes.pivotZ, float3(0, 0.5, 0));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.000300000014);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_c));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\tfloat3 targetOffset
|
|
= (float3)0;\n\t\t\t\t{\n\t\t\t\t \n\t\t\t\t targetOffset = float3(0,
|
|
1, 0);\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\tattributes.targetPosition = mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\tfloat
|
|
alpha = VFXGetFragmentColor(i);\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\treturn
|
|
(float4)0;\n\t\t\t#else\n\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t#endif\n\t\t\t}\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos
|
|
: SV_POSITION;\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t\t\tnoperspective
|
|
float pixelOffset : TEXCOORD0; // for AA\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_EXPOSURE_WEIGHT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3 builtInInterpolants
|
|
: TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t\t};\n\t\t\n\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define
|
|
VFX_VARYING_COLOR color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define
|
|
VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE builtInInterpolants.x\n\t\t#define
|
|
VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t#define
|
|
VFX_VARYING_PIXELOFFSET pixelOffset\n\t\t#endif\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.z\n\t\t#endif\n\t\t\n\t\t
|
|
#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_3278B229(inout float size,
|
|
float Size) /*attribute:size Composition:Overwrite Source:Slot Random:Off channels:X
|
|
*/\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid SetAttribute_ED2BDC15(inout
|
|
bool alive, bool Alive) /*attribute:alive Composition:Overwrite Source:Slot
|
|
Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_65DEC940( /*inout */attributes.pivotX, /*inout */attributes.pivotY,
|
|
/*inout */attributes.pivotZ, float3(0, 0.5, 0));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.000300000014);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_c));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\tfloat3 targetOffset
|
|
= (float3)0;\n\t\t\t\t{\n\t\t\t\t \n\t\t\t\t targetOffset = float3(0,
|
|
1, 0);\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\tattributes.targetPosition = mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t//
|
|
Line AA\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\t\n\t\t\t\to.color.a *= 1.0f -
|
|
abs(i.pixelOffset);\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\to.color = VFXApplyPreExposure(o.color,
|
|
i);\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t o.color = VFXTransformFinalColor(o.color);\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 0
|
|
name: '[CrossHair]Output Particle Line'
|
|
source: "Shader \"Hidden/VFX/HUD_Reticula/CrossHair/Output Particle Line\"\n{\r\n\tSubShader\r\n\t{\t\r\n\t\tTags
|
|
{ \"Queue\"=\"Transparent+700\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"
|
|
}\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tBlend
|
|
SrcAlpha OneMinusSrcAlpha , Zero OneMinusSrcAlpha\n\t\tZTest LEqual\n\t\tZWrite
|
|
Off\n\t\tCull Off\n\t\t\n\t\n\t\t\t\n\t\tHLSLINCLUDE\n\t\t\n\t\t#define NB_THREADS_PER_GROUP
|
|
64\n\t\t#define HAS_ATTRIBUTES 1\n\t\t#define VFX_PASSDEPTH_ACTUAL (0)\n\t\t#define
|
|
VFX_PASSDEPTH_MOTION_VECTOR (1)\n\t\t#define VFX_PASSDEPTH_SELECTION (2)\n\t\t#define
|
|
VFX_USE_POSITION_CURRENT 1\n\t\t#define VFX_USE_COLOR_CURRENT 1\n\t\t#define
|
|
VFX_USE_ALPHA_CURRENT 1\n\t\t#define VFX_USE_ALIVE_CURRENT 1\n\t\t#define VFX_USE_PIVOTX_CURRENT
|
|
1\n\t\t#define VFX_USE_PIVOTY_CURRENT 1\n\t\t#define VFX_USE_PIVOTZ_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEX_CURRENT 1\n\t\t#define VFX_USE_ANGLEY_CURRENT
|
|
1\n\t\t#define VFX_USE_ANGLEZ_CURRENT 1\n\t\t#define VFX_USE_AXISX_CURRENT
|
|
1\n\t\t#define VFX_USE_AXISY_CURRENT 1\n\t\t#define VFX_USE_AXISZ_CURRENT 1\n\t\t#define
|
|
VFX_USE_SIZE_CURRENT 1\n\t\t#define VFX_USE_SCALEX_CURRENT 1\n\t\t#define VFX_USE_SCALEY_CURRENT
|
|
1\n\t\t#define VFX_USE_SCALEZ_CURRENT 1\n\t\t#define VFX_USE_TARGETPOSITION_CURRENT
|
|
1\n\t\t#define VFX_COLORMAPPING_DEFAULT 1\n\t\t#define IS_TRANSPARENT_PARTICLE
|
|
1\n\t\t#define VFX_BLENDMODE_ALPHA 1\n\t\t#define VFX_HAS_INDIRECT_DRAW 1\n\t\t#define
|
|
VFX_BYPASS_EXPOSURE 1\n\t\t#define TARGET_FROM_ATTRIBUTES 1\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t#define
|
|
VFX_LOCAL_SPACE 1\n\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\t\t\n\n\t\tCBUFFER_START(parameters)\n\t\t
|
|
float Alive_d;\n\t\t uint3 PADDING_0;\n\t\tCBUFFER_END\n\t\t\n\t\tstruct
|
|
Attributes\n\t\t{\n\t\t float3 position;\n\t\t float3 color;\n\t\t
|
|
float alpha;\n\t\t bool alive;\n\t\t float pivotX;\n\t\t float pivotY;\n\t\t
|
|
float pivotZ;\n\t\t float angleX;\n\t\t float angleY;\n\t\t float
|
|
angleZ;\n\t\t float3 axisX;\n\t\t float3 axisY;\n\t\t float3 axisZ;\n\t\t
|
|
float size;\n\t\t float scaleX;\n\t\t float scaleY;\n\t\t float scaleZ;\n\t\t
|
|
float3 targetPosition;\n\t\t};\n\t\t\n\t\tstruct SourceAttributes\n\t\t{\n\t\t};\n\t\t\n\t\t\n\n\t\t\n\t\t#define
|
|
VFX_NEEDS_COLOR_INTERPOLATOR (VFX_USE_COLOR_CURRENT || VFX_USE_ALPHA_CURRENT)\n\t\t#if
|
|
HAS_STRIPS\n\t\t#define VFX_OPTIONAL_INTERPOLATION \n\t\t#else\n\t\t#define
|
|
VFX_OPTIONAL_INTERPOLATION nointerpolation\n\t\t#endif\n\t\t\n\t\tByteAddressBuffer
|
|
attributeBuffer;\t\n\t\t\n\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\tStructuredBuffer<uint>
|
|
indirectBuffer;\t\n\t\t#endif\t\n\t\t\n\t\t#if USE_DEAD_LIST_COUNT\n\t\tByteAddressBuffer
|
|
deadListCount;\n\t\t#endif\n\t\t\n\t\t#if HAS_STRIPS\n\t\tBuffer<uint> stripDataBuffer;\n\t\t#endif\n\t\t\n\t\t#if
|
|
WRITE_MOTION_VECTOR_IN_FORWARD || USE_MOTION_VECTORS_PASS\n\t\tByteAddressBuffer
|
|
elementToVFXBufferPrevious;\n\t\t#endif\n\t\t\n\t\tCBUFFER_START(outputParams)\n\t\t\tfloat
|
|
nbMax;\n\t\t\tfloat systemSeed;\n\t\tCBUFFER_END\n\t\t\n\t\t// Helper macros
|
|
to always use a valid instanceID\n\t\t#if defined(UNITY_STEREO_INSTANCING_ENABLED)\n\t\t\t#define
|
|
VFX_DECLARE_INSTANCE_ID UNITY_VERTEX_INPUT_INSTANCE_ID\n\t\t\t#define VFX_GET_INSTANCE_ID(i)
|
|
unity_InstanceID\n\t\t#else\n\t\t\t#define VFX_DECLARE_INSTANCE_ID uint
|
|
instanceID : SV_InstanceID;\n\t\t\t#define VFX_GET_INSTANCE_ID(i) i.instanceID\n\t\t#endif\n\t\t\n\t\tENDHLSL\n\t\t\n\r\n\t\tPass\n\t\t{\t\t\n\t\t\tTags
|
|
{ \"LightMode\"=\"SceneSelectionPass\" }\n\t\t\n\t\t\tZWrite On\n\t\t\tBlend
|
|
Off\n\t\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#define VFX_PASSDEPTH VFX_PASSDEPTH_SELECTION\n\t\t\t#pragma
|
|
target 4.5\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\t#if
|
|
USE_ALPHA_TEST || VFX_USE_ALPHA_CURRENT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float2 builtInInterpolants : TEXCOORD0;\n\t\t\t\t#endif\n\t\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t\t#define VFX_VARYING_POSCS pos\n\t\t\t#define
|
|
VFX_VARYING_ALPHA builtInInterpolants.y\n\t\t\t#define VFX_VARYING_ALPHATHRESHOLD
|
|
builtInInterpolants.x\n\t\t\t\t\t\t\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_48A7BEFB(inout float angleZ,
|
|
float Angle) /*attribute:angle Composition:Overwrite Source:Slot Random:Off
|
|
channels:Z */\n\t\t\t{\n\t\t\t angleZ = Angle.x;\n\t\t\t}\n\t\t\tvoid SetAttribute_3278B229(inout
|
|
float size, float Size) /*attribute:size Composition:Overwrite Source:Slot
|
|
Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_ED2BDC15(inout bool alive, bool Alive) /*attribute:alive Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_65DEC940( /*inout */attributes.pivotX, /*inout */attributes.pivotY,
|
|
/*inout */attributes.pivotZ, float3(0, 0.5, 0));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_48A7BEFB( /*inout */attributes.angleZ, (float)90);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.000300000014);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_d));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\tfloat3 targetOffset
|
|
= (float3)0;\n\t\t\t\t{\n\t\t\t\t \n\t\t\t\t targetOffset = float3(0,
|
|
1, 0);\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\tattributes.targetPosition = mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\tint _ObjectId;\n\t\t\tint _PassValue;\n\t\t\t#endif\n\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tfloat4 frag(ps_input i) : SV_TARGET\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\tfloat
|
|
alpha = VFXGetFragmentColor(i);\n\t\t\t\tVFXClipFragmentColor(alpha,i);\n\t\t\t#if
|
|
VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION\n\t\t\t\treturn float4(_ObjectId,
|
|
_PassValue, 1.0, 1.0);\n\t\t\t#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL\n\t\t\t\treturn
|
|
(float4)0;\n\t\t\t#else\n\t\t\t#error VFX_PASSDEPTH undefined \n\t\t\t#endif\n\t\t\t}\n\t\t\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t\t//
|
|
Forward pass\n\t\tPass\n\t\t{\t\t\n\t\t\tTags { \"LightMode\"=\"ForwardOnly\"
|
|
}\n\t\t\n\t\t\tHLSLPROGRAM\n\t\t\t#pragma target 4.5\n\t\t\t#pragma multi_compile
|
|
_ DEBUG_DISPLAY\n\t\t\t\n\t\t\tstruct ps_input\n\t\t\t{\n\t\t\t\tfloat4 pos
|
|
: SV_POSITION;\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t\t\tnoperspective
|
|
float pixelOffset : TEXCOORD0; // for AA\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_COLOR_INTERPOLATOR\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION
|
|
float4 color : COLOR0;\n\t\t\t\t#endif\n\t\t\t\t#if USE_SOFT_PARTICLE || USE_ALPHA_TEST
|
|
|| USE_EXPOSURE_WEIGHT\n\t\t\t\tVFX_OPTIONAL_INTERPOLATION float3 builtInInterpolants
|
|
: TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t\t\tfloat3
|
|
posWS : TEXCOORD2;\n\t\t\t\t#endif\n\t\t\n\t\t\t\tUNITY_VERTEX_OUTPUT_STEREO\n\t\t\t};\n\t\t\t\n\t\t\tstruct
|
|
ps_output\n\t\t\t{\n\t\t\t\tfloat4 color : SV_Target0;\n\t\t\t};\n\t\t\n\t\t#define
|
|
VFX_VARYING_PS_INPUTS ps_input\n\t\t#define VFX_VARYING_POSCS pos\n\t\t#define
|
|
VFX_VARYING_COLOR color.rgb\n\t\t#define VFX_VARYING_ALPHA color.a\n\t\t#define
|
|
VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE builtInInterpolants.x\n\t\t#define
|
|
VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y\n\t\t#if IS_TRANSPARENT_PARTICLE\n\t\t#define
|
|
VFX_VARYING_PIXELOFFSET pixelOffset\n\t\t#endif\n\t\t#if VFX_NEEDS_POSWS_INTERPOLATOR\n\t\t#define
|
|
VFX_VARYING_POSWS posWS\n\t\t#endif\n\t\t#if USE_EXPOSURE_WEIGHT\n\t\t#define
|
|
VFX_VARYING_EXPOSUREWEIGHT builtInInterpolants.z\n\t\t#endif\n\t\t\n\t\t
|
|
#define SHADERPASS SHADERPASS_FORWARD_UNLIT\n\t\t\t#if !(defined(VFX_VARYING_PS_INPUTS)
|
|
&& defined(VFX_VARYING_POSCS))\n\t\t\t#error VFX_VARYING_PS_INPUTS and VFX_VARYING_POSCS
|
|
must be defined.\n\t\t\t#endif\n\t\t\t\n\t\t\t#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl\"\n\t\t\t#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\t\t\t\n\n\t\t\tvoid
|
|
SetAttribute_65DEC940(inout float pivotX, inout float pivotY, inout float pivotZ,
|
|
float3 Pivot) /*attribute:pivot Composition:Overwrite Source:Slot Random:Off
|
|
channels:XYZ */\n\t\t\t{\n\t\t\t pivotX = Pivot.x;\n\t\t\t pivotY = Pivot.y;\n\t\t\t
|
|
pivotZ = Pivot.z;\n\t\t\t}\n\t\t\tvoid SetAttribute_48A7BEFB(inout float angleZ,
|
|
float Angle) /*attribute:angle Composition:Overwrite Source:Slot Random:Off
|
|
channels:Z */\n\t\t\t{\n\t\t\t angleZ = Angle.x;\n\t\t\t}\n\t\t\tvoid SetAttribute_3278B229(inout
|
|
float size, float Size) /*attribute:size Composition:Overwrite Source:Slot
|
|
Random:Off channels:X */\n\t\t\t{\n\t\t\t size = Size;\n\t\t\t}\n\t\t\tvoid
|
|
SetAttribute_ED2BDC15(inout bool alive, bool Alive) /*attribute:alive Composition:Overwrite
|
|
Source:Slot Random:Off channels:XYZ */\n\t\t\t{\n\t\t\t alive = Alive;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t\tstruct
|
|
vs_input\n\t\t\t{\n\t\t\t\tVFX_DECLARE_INSTANCE_ID\n\t\t\t};\n\t\t\t\n\t\t\t#pragma
|
|
vertex vert\n\t\t\tfloat4 ClipOnNearPlane(float4 pos, float4 other)\n\t\t\t{\n\t\t\t\tif
|
|
(pos.w >= _ProjectionParams.y || other.w < _ProjectionParams.y)\n\t\t\t\t\treturn
|
|
pos;\n\t\t\t\t\t\n\t\t\t\t// Project on near plane\n\t\t\t\tfloat ratio = (_ProjectionParams.y
|
|
- pos.w) / (other.w - pos.w);\n\t\t\t\treturn pos + (other - pos) * ratio;\n\t\t\t}\n\t\t\t\n\t\t\tVFX_VARYING_PS_INPUTS
|
|
vert(uint id : SV_VertexID, vs_input i)\n\t\t\t{\n\t\t\t\tVFX_VARYING_PS_INPUTS
|
|
o = (VFX_VARYING_PS_INPUTS)0;\n\t\t\t\n\t\t\t\tUNITY_SETUP_INSTANCE_ID(i);\n\t\t\t\tUNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);\n\t\t\t\n\t\t\t\tuint
|
|
index = (id >> 2) + VFX_GET_INSTANCE_ID(i) * 2048;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tuint
|
|
deadCount = 0;\n\t\t\t\t\t\t#if USE_DEAD_LIST_COUNT\n\t\t\t\t\t\tdeadCount
|
|
= deadListCount.Load(0);\n\t\t\t\t\t\t#endif\t\n\t\t\t\t\t\tif (index >= asuint(nbMax)
|
|
- deadCount)\n\t\t\t\t\t\t#if USE_GEOMETRY_SHADER\n\t\t\t\t\t\t\treturn; //
|
|
cull\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\treturn o; // cull\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\tAttributes
|
|
attributes = (Attributes)0;\n\t\t\t\t\t\tSourceAttributes sourceAttributes
|
|
= (SourceAttributes)0;\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if VFX_HAS_INDIRECT_DRAW\n\t\t\t\t\t\tindex
|
|
= indirectBuffer[index];\n\t\t\t\t\t\tattributes.position = asfloat(attributeBuffer.Load3((index
|
|
* 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color = float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha
|
|
= (float)1;\n\t\t\t\t\t\tattributes.alive = (bool)true;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#else\n\t\t\t\t\t\tattributes.alive
|
|
= (bool)true;\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if !HAS_STRIPS\n\t\t\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\t\t\treturn o;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\t\t\t\tattributes.color
|
|
= float3(1, 1, 1);\n\t\t\t\t\t\tattributes.alpha = (float)1;\n\t\t\t\t\t\tattributes.pivotX
|
|
= (float)0;\n\t\t\t\t\t\tattributes.pivotY = (float)0;\n\t\t\t\t\t\tattributes.pivotZ
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleX = (float)0;\n\t\t\t\t\t\tattributes.angleY
|
|
= (float)0;\n\t\t\t\t\t\tattributes.angleZ = (float)0;\n\t\t\t\t\t\tattributes.axisX
|
|
= float3(1, 0, 0);\n\t\t\t\t\t\tattributes.axisY = float3(0, 1, 0);\n\t\t\t\t\t\tattributes.axisZ
|
|
= float3(0, 0, 1);\n\t\t\t\t\t\tattributes.size = (float)0.100000001;\n\t\t\t\t\t\tattributes.scaleX
|
|
= (float)1;\n\t\t\t\t\t\tattributes.scaleY = (float)1;\n\t\t\t\t\t\tattributes.scaleZ
|
|
= (float)1;\n\t\t\t\t\t\tattributes.targetPosition = float3(0, 0, 0);\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t//
|
|
Initialize built-in needed attributes\n\t\t\t\t\t\t#if HAS_STRIPS\n\t\t\t\t\t\tInitStripAttributes(index,
|
|
attributes, stripData);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_65DEC940( /*inout */attributes.pivotX, /*inout */attributes.pivotY,
|
|
/*inout */attributes.pivotZ, float3(0, 0.5, 0));\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_48A7BEFB( /*inout */attributes.angleZ, (float)90);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t
|
|
SetAttribute_3278B229( /*inout */attributes.size, (float)0.000300000014);\n\t\t\t\t}\n\t\t\t\tSetAttribute_ED2BDC15(
|
|
/*inout */attributes.alive, (bool)asuint(Alive_d));\n\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\tif
|
|
(!attributes.alive)\n\t\t\t\t\treturn o;\n\t\t\t\n\t\t\t\t#if TARGET_FROM_ATTRIBUTES\n\t\t\t\t\n\t\t\t\t\t\tfloat3
|
|
size3 = float3(attributes.size,attributes.size,attributes.size);\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEX_CURRENT\n\t\t\t\t\t\tsize3.x *= attributes.scaleX;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEY_CURRENT\n\t\t\t\t\t\tsize3.y *= attributes.scaleY;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_SCALEZ_CURRENT\n\t\t\t\t\t\tsize3.z *= attributes.scaleZ;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\tfloat4x4
|
|
elementToVFX = GetElementToVFXMatrix(\n\t\t\t\t\tattributes.axisX,\n\t\t\t\t\tattributes.axisY,\n\t\t\t\t\tattributes.axisZ,\n\t\t\t\t\tfloat3(attributes.angleX,attributes.angleY,attributes.angleZ),\n\t\t\t\t\tfloat3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),\n\t\t\t\t\tsize3,\n\t\t\t\t\tattributes.position);\n\t\t\t\n\t\t\t\tattributes.position
|
|
= mul(elementToVFX,float4(0,0,0,1)).xyz;\n\t\t\t\t\n\t\t\t\tfloat3 targetOffset
|
|
= (float3)0;\n\t\t\t\t{\n\t\t\t\t \n\t\t\t\t targetOffset = float3(0,
|
|
1, 0);\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\tattributes.targetPosition = mul(elementToVFX,float4(targetOffset,1)).xyz;\n\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\tfloat4
|
|
pos0 = TransformPositionVFXToClip(attributes.position);\n\t\t\t\tfloat4 pos1
|
|
= TransformPositionVFXToClip(attributes.targetPosition);\n\t\t\t\t\n\t\t\t\tpos0
|
|
= ClipOnNearPlane(pos0, pos1);\n\t\t\t\tpos1 = ClipOnNearPlane(pos1, pos0);\n\t\t\t\t\n\t\t\t\tfloat2
|
|
ndcPos0 = pos0.xy / pos0.w;\n\t\t\t\tfloat2 ndcPos1 = pos1.xy / pos1.w;\n\t\t\t\t\n\t\t\t\tfloat2
|
|
dir = ndcPos0 - ndcPos1;\n\t\t\t\tfloat2 normal = normalize(dir.yx * float2(-1,-UNITY_MATRIX_P[1][1]
|
|
/ UNITY_MATRIX_P[0][0]));\n\t\t\t\t\n\t\t\t#if IS_OPAQUE_PARTICLE\n\t\t\t\tconst
|
|
float thicknessMul = 1.0f; // pixel perfect\n\t\t\t#else\n\t\t\t\tconst float
|
|
thicknessMul = 2.0f; // for AA\n\t\t\t#endif\n\t\t\t\tnormal *= thicknessMul
|
|
/ _ScreenParams.xy;\n\t\t\t\t\n\t\t\t\tfloat4 dPos0 = float4(normal * pos0.w,
|
|
0.0f, 0.0f);\n\t\t\t\tfloat4 dPos1 = float4(normal * pos1.w, 0.0f, 0.0f);\n\t\t\t\tfloat4
|
|
vPosArray[4] = { pos0 + dPos0, pos0 - dPos0, pos1 + dPos1, pos1 - dPos1};\n\t\t\t\t\n\t\t\t\t#ifdef
|
|
VFX_VARYING_PIXELOFFSET\n\t\t\t\to.VFX_VARYING_PIXELOFFSET = (id & 1) ? -1.0f
|
|
: 1.0f;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t// If ever used we need the position
|
|
in vfx space (we dont take into account the pixel offset)\n\t\t\t\tfloat3 vPos
|
|
= ((id >> 1) & 1) ? attributes.position : attributes.targetPosition;\n\t\t\t\t\n\t\t\t\to.VFX_VARYING_POSCS
|
|
= vPosArray[id & 3];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t#if VFX_USE_COLOR_CURRENT
|
|
&& defined(VFX_VARYING_COLOR)\n\t\t\t\t\t\to.VFX_VARYING_COLOR = attributes.color;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#if
|
|
VFX_USE_ALPHA_CURRENT && defined(VFX_VARYING_ALPHA) \n\t\t\t\t\t\to.VFX_VARYING_ALPHA
|
|
= attributes.alpha;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifdef VFX_VARYING_EXPOSUREWEIGHT\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_EXPOSUREWEIGHT
|
|
= exposureWeight;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_SOFT_PARTICLE
|
|
&& defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE
|
|
= invSoftParticlesFadeDistance;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
(USE_ALPHA_TEST || WRITE_MOTION_VECTOR_IN_FORWARD) && (!VFX_SHADERGRAPH ||
|
|
!HAS_SHADERGRAPH_PARAM_ALPHATHRESHOLD) && defined(VFX_VARYING_ALPHATHRESHOLD)\n\t\t\t\t\t\t\n\t\t\t\t\t\to.VFX_VARYING_ALPHATHRESHOLD
|
|
= alphaThreshold;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if USE_UV_SCALE_BIAS\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined (VFX_VARYING_UV)\n\t\t\t\t\t\to.VFX_VARYING_UV.xy = o.VFX_VARYING_UV.xy
|
|
* uvScale + uvBias;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
defined(VFX_VARYING_POSWS)\n\t\t\t\t\t\to.VFX_VARYING_POSWS = TransformPositionVFXToWorld(vPos);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\t\n\t\t\t#include \"Packages/com.unity.visualeffectgraph/Shaders/VFXCommonOutput.hlsl\"\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t#pragma
|
|
fragment frag\n\t\t\tps_output frag(ps_input i)\n\t\t\t{\n\t\t\t\tUNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);\n\t\t\t\tps_output
|
|
o = (ps_output)0;\n\t\t\t\tVFXTransformPSInputs(i);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat4
|
|
color = VFXGetFragmentColor(i);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#ifndef VFX_TEXTURE_COLOR\n\t\t\t\t\t\t\t#define
|
|
VFX_TEXTURE_COLOR float4(1.0,1.0,1.0,1.0)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_DEFAULT\n\t\t\t\t\t\t\to.color = color * VFX_TEXTURE_COLOR;\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if
|
|
VFX_COLORMAPPING_GRADIENTMAPPED\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\to.color = SampleGradient(gradient,
|
|
VFX_TEXTURE_COLOR.a * color.a) * float4(color.rgb,1.0);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t//
|
|
Line AA\n\t\t\t\t#if IS_TRANSPARENT_PARTICLE\t\n\t\t\t\to.color.a *= 1.0f -
|
|
abs(i.pixelOffset);\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\to.color = VFXApplyPreExposure(o.color,
|
|
i);\n\t\t\t\to.color = VFXApplyFog(o.color,i);\n\t\t\t\tVFXClipFragmentColor(o.color.a,i);\n\t\t\t\to.color.a
|
|
= saturate(o.color.a);\n\t\t o.color = VFXTransformFinalColor(o.color);\n\t\t\t\treturn
|
|
o;\n\t\t\t}\n\t\t\tENDHLSL\n\t\t}\n\t\t\n\r\n\t\t\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Background Random Code Lines]CameraSort'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define USE_DEAD_LIST_COUNT
|
|
1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float4x4 localToWorld;\nCBUFFER_END\n\nstruct Attributes\n{\n float3 position;\n};\n\nstruct
|
|
SourceAttributes\n{\n};\n\n\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nCBUFFER_START(params)\r\n
|
|
uint nbMax;\r\n uint dispatchWidth;\r\nCBUFFER_END\r\n\r\nCBUFFER_START(cameraParams)\r\n
|
|
float3 cameraPosition;\r\nCBUFFER_END\r\n\r\nByteAddressBuffer attributeBuffer;\r\nStructuredBuffer<uint>
|
|
inputBuffer;\r\n\r\n#if USE_DEAD_LIST_COUNT\r\nByteAddressBuffer deadListCount;\r\n#endif\r\n\r\nstruct
|
|
Kvp\r\n{\r\n\tfloat sortKey;\r\n\tuint index;\r\n};\r\n\r\nRWStructuredBuffer<Kvp>
|
|
outputBuffer;\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
threshold = nbMax;\r\n#if USE_DEAD_LIST_COUNT\r\n\tthreshold -= deadListCount.Load(0);\r\n#endif\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tif (id < threshold)\r\n\t{\r\n\t\tuint index =
|
|
inputBuffer[id];\r\n\t\t\r\n\t\tAttributes attributes = (Attributes)0;\r\n\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_LOCAL_SPACE\r\n\t\tfloat3 wPos = mul(localToWorld,float4(attributes.position,1.0f)).xyz;\r\n#else\r\n\t\tfloat3
|
|
wPos = attributes.position;\r\n#endif\r\n\t\tfloat3 camToPos = wPos - cameraPosition;\r\n\t\t\r\n\t\tKvp
|
|
kvp;\r\n\t\tkvp.sortKey = dot(camToPos,camToPos); // sqr distance to the camera\r\n\t\tkvp.index
|
|
= index;\r\n\r\n\t\toutputBuffer[id] = kvp;\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[Boot Text]CameraSort'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define USE_DEAD_LIST_COUNT
|
|
1\n#define VFX_LOCAL_SPACE 1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float4x4 localToWorld;\nCBUFFER_END\n\nstruct Attributes\n{\n float3 position;\n};\n\nstruct
|
|
SourceAttributes\n{\n};\n\n\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nCBUFFER_START(params)\r\n
|
|
uint nbMax;\r\n uint dispatchWidth;\r\nCBUFFER_END\r\n\r\nCBUFFER_START(cameraParams)\r\n
|
|
float3 cameraPosition;\r\nCBUFFER_END\r\n\r\nByteAddressBuffer attributeBuffer;\r\nStructuredBuffer<uint>
|
|
inputBuffer;\r\n\r\n#if USE_DEAD_LIST_COUNT\r\nByteAddressBuffer deadListCount;\r\n#endif\r\n\r\nstruct
|
|
Kvp\r\n{\r\n\tfloat sortKey;\r\n\tuint index;\r\n};\r\n\r\nRWStructuredBuffer<Kvp>
|
|
outputBuffer;\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
threshold = nbMax;\r\n#if USE_DEAD_LIST_COUNT\r\n\tthreshold -= deadListCount.Load(0);\r\n#endif\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tif (id < threshold)\r\n\t{\r\n\t\tuint index =
|
|
inputBuffer[id];\r\n\t\t\r\n\t\tAttributes attributes = (Attributes)0;\r\n\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_LOCAL_SPACE\r\n\t\tfloat3 wPos = mul(localToWorld,float4(attributes.position,1.0f)).xyz;\r\n#else\r\n\t\tfloat3
|
|
wPos = attributes.position;\r\n#endif\r\n\t\tfloat3 camToPos = wPos - cameraPosition;\r\n\t\t\r\n\t\tKvp
|
|
kvp;\r\n\t\tkvp.sortKey = dot(camToPos,camToPos); // sqr distance to the camera\r\n\t\tkvp.index
|
|
= index;\r\n\r\n\t\toutputBuffer[id] = kvp;\r\n\t}\r\n}\r\n"
|
|
- compute: 1
|
|
name: '[CrossHair]CameraSort'
|
|
source: "#pragma kernel CSMain\r\n#define NB_THREADS_PER_GROUP 64\n#define HAS_ATTRIBUTES
|
|
1\n#define VFX_PASSDEPTH_ACTUAL (0)\n#define VFX_PASSDEPTH_MOTION_VECTOR (1)\n#define
|
|
VFX_PASSDEPTH_SELECTION (2)\n#define VFX_USE_POSITION_CURRENT 1\n#define VFX_LOCAL_SPACE
|
|
1\n#include \"Packages/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXDefines.hlsl\"\n\n\r\nCBUFFER_START(parameters)\n
|
|
float4x4 localToWorld;\nCBUFFER_END\n\nstruct Attributes\n{\n float3 position;\n};\n\nstruct
|
|
SourceAttributes\n{\n};\n\n\n\r\n#include \"Packages/com.unity.visualeffectgraph/Shaders/Common/VFXCommonCompute.hlsl\"\n#include
|
|
\"Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl\"\n\n\r\n\r\nCBUFFER_START(params)\r\n
|
|
uint nbMax;\r\n uint dispatchWidth;\r\nCBUFFER_END\r\n\r\nCBUFFER_START(cameraParams)\r\n
|
|
float3 cameraPosition;\r\nCBUFFER_END\r\n\r\nByteAddressBuffer attributeBuffer;\r\nStructuredBuffer<uint>
|
|
inputBuffer;\r\n\r\n#if USE_DEAD_LIST_COUNT\r\nByteAddressBuffer deadListCount;\r\n#endif\r\n\r\nstruct
|
|
Kvp\r\n{\r\n\tfloat sortKey;\r\n\tuint index;\r\n};\r\n\r\nRWStructuredBuffer<Kvp>
|
|
outputBuffer;\r\n\r\n[numthreads(NB_THREADS_PER_GROUP,1,1)]\r\nvoid CSMain(uint3
|
|
groupId : SV_GroupID,\r\n uint3 groupThreadId : SV_GroupThreadID)\r\n{\r\n\tuint
|
|
threshold = nbMax;\r\n#if USE_DEAD_LIST_COUNT\r\n\tthreshold -= deadListCount.Load(0);\r\n#endif\r\n\tuint
|
|
id = groupThreadId.x + groupId.x * NB_THREADS_PER_GROUP + groupId.y * dispatchWidth
|
|
* NB_THREADS_PER_GROUP;\r\n\tif (id < threshold)\r\n\t{\r\n\t\tuint index =
|
|
inputBuffer[id];\r\n\t\t\r\n\t\tAttributes attributes = (Attributes)0;\r\n\t\tattributes.position
|
|
= asfloat(attributeBuffer.Load3((index * 0x4 + 0x0) << 2));\n\t\t\n\r\n\t\t\r\n#if
|
|
VFX_LOCAL_SPACE\r\n\t\tfloat3 wPos = mul(localToWorld,float4(attributes.position,1.0f)).xyz;\r\n#else\r\n\t\tfloat3
|
|
wPos = attributes.position;\r\n#endif\r\n\t\tfloat3 camToPos = wPos - cameraPosition;\r\n\t\t\r\n\t\tKvp
|
|
kvp;\r\n\t\tkvp.sortKey = dot(camToPos,camToPos); // sqr distance to the camera\r\n\t\tkvp.index
|
|
= index;\r\n\r\n\t\toutputBuffer[id] = kvp;\r\n\t}\r\n}\r\n"
|
|
m_Infos:
|
|
m_Expressions:
|
|
m_Expressions:
|
|
- op: 1
|
|
valueIndex: 0
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 3
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 4
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 5
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 6
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 9
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 10
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 11
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 12
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 13
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 14
|
|
- op: 1
|
|
valueIndex: 14
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 17
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 18
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 57
|
|
valueIndex: 19
|
|
data[0]: 9
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 0
|
|
- op: 1
|
|
valueIndex: 20
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 23
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 24
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 27
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 4
|
|
- op: 1
|
|
valueIndex: 31
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 6
|
|
valueIndex: 32
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: -1
|
|
- op: 1
|
|
valueIndex: 33
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 34
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 13
|
|
- op: 1
|
|
valueIndex: 35
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 8
|
|
valueIndex: 38
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: -1
|
|
- op: 1
|
|
valueIndex: 39
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 40
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 56
|
|
valueIndex: 41
|
|
data[0]: 21
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 0
|
|
- op: 1
|
|
valueIndex: 45
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 48
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 26
|
|
valueIndex: 51
|
|
data[0]: 19
|
|
data[1]: 20
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 52
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 26
|
|
valueIndex: 55
|
|
data[0]: 19
|
|
data[1]: 25
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 56
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 17
|
|
- op: 1
|
|
valueIndex: 57
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 60
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 63
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 62
|
|
valueIndex: 64
|
|
data[0]: 24
|
|
data[1]: 23
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 26
|
|
valueIndex: 65
|
|
data[0]: 29
|
|
data[1]: 25
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 66
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 69
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 73
|
|
valueIndex: 72
|
|
data[0]: 32
|
|
data[1]: 31
|
|
data[2]: 37
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 73
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 76
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 77
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 72
|
|
valueIndex: 80
|
|
data[0]: 35
|
|
data[1]: 1
|
|
data[2]: -1
|
|
data[3]: 4
|
|
- op: 1
|
|
valueIndex: 81
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 84
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 87
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 88
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 73
|
|
valueIndex: 91
|
|
data[0]: 32
|
|
data[1]: 42
|
|
data[2]: 47
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 92
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 14
|
|
- op: 1
|
|
valueIndex: 93
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 94
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 73
|
|
valueIndex: 95
|
|
data[0]: 44
|
|
data[1]: 46
|
|
data[2]: 43
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 98
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 14
|
|
- op: 1
|
|
valueIndex: 99
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 100
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 14
|
|
- op: 1
|
|
valueIndex: 101
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 14
|
|
- op: 1
|
|
valueIndex: 102
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 104
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 106
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 108
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 110
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 112
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 114
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 116
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 118
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 120
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 122
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 124
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 126
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 128
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 130
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 132
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 133
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 136
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 139
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 7
|
|
- op: 1
|
|
valueIndex: 140
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 142
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 144
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 145
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 148
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 149
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 150
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 151
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 5
|
|
- op: 1
|
|
valueIndex: 152
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 153
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 155
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 158
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 4
|
|
- op: 1
|
|
valueIndex: 162
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 15
|
|
- op: 1
|
|
valueIndex: 163
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 31
|
|
valueIndex: 165
|
|
data[0]: 49
|
|
data[1]: 47
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 166
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 168
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 171
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 172
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 173
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 174
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 6
|
|
- op: 1
|
|
valueIndex: 175
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 57
|
|
valueIndex: 176
|
|
data[0]: 54
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 177
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 179
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 181
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 7
|
|
- op: 1
|
|
valueIndex: 182
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 1
|
|
valueIndex: 183
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 186
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 1
|
|
- op: 34
|
|
valueIndex: 187
|
|
data[0]: 45
|
|
data[1]: 43
|
|
data[2]: 53
|
|
data[3]: -1
|
|
- op: 1
|
|
valueIndex: 203
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 15
|
|
- op: 57
|
|
valueIndex: 204
|
|
data[0]: 56
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 205
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 7
|
|
- op: 1
|
|
valueIndex: 206
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 15
|
|
- op: 57
|
|
valueIndex: 207
|
|
data[0]: 57
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 208
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 210
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 212
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 4
|
|
- op: 1
|
|
valueIndex: 216
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 218
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 7
|
|
- op: 1
|
|
valueIndex: 219
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 221
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 57
|
|
valueIndex: 223
|
|
data[0]: 50
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 4
|
|
- op: 1
|
|
valueIndex: 224
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 3
|
|
- op: 1
|
|
valueIndex: 227
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 1
|
|
valueIndex: 229
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: 2
|
|
- op: 9
|
|
valueIndex: 231
|
|
data[0]: -1
|
|
data[1]: -1
|
|
data[2]: -1
|
|
data[3]: -1
|
|
m_NeedsLocalToWorld: 1
|
|
m_NeedsWorldToLocal: 0
|
|
m_NeededMainCameraBuffers: 0
|
|
m_PropertySheet:
|
|
m_Float:
|
|
m_Array:
|
|
- m_ExpressionIndex: 1
|
|
m_Value: 0.5
|
|
- m_ExpressionIndex: 3
|
|
m_Value: 1
|
|
- m_ExpressionIndex: 11
|
|
m_Value: 128
|
|
- m_ExpressionIndex: 12
|
|
m_Value: 6.2831855
|
|
- m_ExpressionIndex: 15
|
|
m_Value: 63
|
|
- m_ExpressionIndex: 18
|
|
m_Value: 31
|
|
- m_ExpressionIndex: 20
|
|
m_Value: -1
|
|
- m_ExpressionIndex: 25
|
|
m_Value: 3
|
|
- m_ExpressionIndex: 35
|
|
m_Value: 0
|
|
- m_ExpressionIndex: 42
|
|
m_Value: 1000
|
|
- m_ExpressionIndex: 47
|
|
m_Value: 0
|
|
- m_ExpressionIndex: 51
|
|
m_Value: 0.33
|
|
- m_ExpressionIndex: 52
|
|
m_Value: 0.03001
|
|
- m_ExpressionIndex: 55
|
|
m_Value: 64
|
|
- m_ExpressionIndex: 73
|
|
m_Value: 0.0003
|
|
- m_ExpressionIndex: 79
|
|
m_Value: 4
|
|
- m_ExpressionIndex: 81
|
|
m_Value: 360
|
|
- m_ExpressionIndex: 82
|
|
m_Value: 511
|
|
- m_ExpressionIndex: 83
|
|
m_Value: 0.2
|
|
- m_ExpressionIndex: 85
|
|
m_Value: 0.1
|
|
- m_ExpressionIndex: 94
|
|
m_Value: 0.01
|
|
- m_ExpressionIndex: 95
|
|
m_Value: 0.3
|
|
- m_ExpressionIndex: 96
|
|
m_Value: 256
|
|
- m_ExpressionIndex: 98
|
|
m_Value: 0.018
|
|
- m_ExpressionIndex: 103
|
|
m_Value: 90
|
|
- m_ExpressionIndex: 105
|
|
m_Value: 5
|
|
m_Vector2f:
|
|
m_Array:
|
|
- m_ExpressionIndex: 58
|
|
m_Value: {x: 0, y: 0}
|
|
- m_ExpressionIndex: 59
|
|
m_Value: {x: 0.3, y: 0.3}
|
|
- m_ExpressionIndex: 60
|
|
m_Value: {x: 0.9, y: 0.9}
|
|
- m_ExpressionIndex: 61
|
|
m_Value: {x: 12, y: 12}
|
|
- m_ExpressionIndex: 62
|
|
m_Value: {x: 1, y: 1}
|
|
- m_ExpressionIndex: 63
|
|
m_Value: {x: 1.1, y: 1.1}
|
|
- m_ExpressionIndex: 64
|
|
m_Value: {x: 1.7, y: 1.7}
|
|
- m_ExpressionIndex: 65
|
|
m_Value: {x: 1.9, y: 1.9}
|
|
- m_ExpressionIndex: 66
|
|
m_Value: {x: 2.1, y: 2.1}
|
|
- m_ExpressionIndex: 67
|
|
m_Value: {x: 2.6, y: 2.6}
|
|
- m_ExpressionIndex: 68
|
|
m_Value: {x: 2.9, y: 2.9}
|
|
- m_ExpressionIndex: 69
|
|
m_Value: {x: 0.5, y: 0.5}
|
|
- m_ExpressionIndex: 70
|
|
m_Value: {x: 2, y: 2}
|
|
- m_ExpressionIndex: 71
|
|
m_Value: {x: 1, y: 3}
|
|
- m_ExpressionIndex: 72
|
|
m_Value: {x: 0.04, y: 0.5}
|
|
- m_ExpressionIndex: 77
|
|
m_Value: {x: 0.125, y: 0.015625}
|
|
- m_ExpressionIndex: 78
|
|
m_Value: {x: 8, y: 64}
|
|
- m_ExpressionIndex: 86
|
|
m_Value: {x: 3, y: 3}
|
|
- m_ExpressionIndex: 90
|
|
m_Value: {x: 32, y: 32}
|
|
- m_ExpressionIndex: 92
|
|
m_Value: {x: 128, y: 128}
|
|
- m_ExpressionIndex: 100
|
|
m_Value: {x: 16, y: 16}
|
|
- m_ExpressionIndex: 101
|
|
m_Value: {x: 0.0625, y: 0.0625}
|
|
- m_ExpressionIndex: 112
|
|
m_Value: {x: 2.5, y: 0.0666}
|
|
- m_ExpressionIndex: 113
|
|
m_Value: {x: 3.37, y: 3.37}
|
|
- m_ExpressionIndex: 115
|
|
m_Value: {x: 5, y: 5}
|
|
- m_ExpressionIndex: 117
|
|
m_Value: {x: 1, y: 0.03125}
|
|
- m_ExpressionIndex: 118
|
|
m_Value: {x: 1, y: 32}
|
|
- m_ExpressionIndex: 121
|
|
m_Value: {x: 0.2, y: 0.01}
|
|
- m_ExpressionIndex: 122
|
|
m_Value: {x: 3.7, y: 3.7}
|
|
m_Vector3f:
|
|
m_Array:
|
|
- m_ExpressionIndex: 0
|
|
m_Value: {x: 1, y: 1, z: 0}
|
|
- m_ExpressionIndex: 4
|
|
m_Value: {x: 1, y: 0, z: 0}
|
|
- m_ExpressionIndex: 10
|
|
m_Value: {x: 31, y: 31, z: 1}
|
|
- m_ExpressionIndex: 14
|
|
m_Value: {x: 2, y: 2, z: 2}
|
|
- m_ExpressionIndex: 16
|
|
m_Value: {x: 1, y: 1, z: 1}
|
|
- m_ExpressionIndex: 22
|
|
m_Value: {x: 0, y: -0.3, z: 0}
|
|
- m_ExpressionIndex: 27
|
|
m_Value: {x: 0, y: 1, z: 0}
|
|
- m_ExpressionIndex: 28
|
|
m_Value: {x: -1, y: 0, z: 0}
|
|
- m_ExpressionIndex: 30
|
|
m_Value: {x: 0, y: -0.24, z: 0}
|
|
- m_ExpressionIndex: 33
|
|
m_Value: {x: 0, y: -0.2, z: 0}
|
|
- m_ExpressionIndex: 34
|
|
m_Value: {x: -0.26, y: 0.15, z: 0}
|
|
- m_ExpressionIndex: 38
|
|
m_Value: {x: -0.28, y: 0.12, z: 0}
|
|
- m_ExpressionIndex: 39
|
|
m_Value: {x: 0.3, y: 0, z: 0}
|
|
- m_ExpressionIndex: 41
|
|
m_Value: {x: 0.0008, y: 0.0008, z: 0.0008}
|
|
- m_ExpressionIndex: 43
|
|
m_Value: {x: 0, y: 0, z: 0}
|
|
- m_ExpressionIndex: 45
|
|
m_Value: {x: 0, y: 0, z: 0.03001}
|
|
- m_ExpressionIndex: 46
|
|
m_Value: {x: 0.0015, y: 0.0015, z: 0.0015}
|
|
- m_ExpressionIndex: 48
|
|
m_Value: {x: 0.01555, y: 0.01555, z: 0.01555}
|
|
- m_ExpressionIndex: 74
|
|
m_Value: {x: 0, y: 0.5, z: 0}
|
|
- m_ExpressionIndex: 75
|
|
m_Value: {x: 0.16, y: 0.16, z: 0.16}
|
|
- m_ExpressionIndex: 80
|
|
m_Value: {x: 0.005375, y: 0.021500003, z: 0.043}
|
|
- m_ExpressionIndex: 87
|
|
m_Value: {x: 0.14, y: 0.14, z: 0.14}
|
|
- m_ExpressionIndex: 93
|
|
m_Value: {x: 0, y: 0, z: 0.3}
|
|
- m_ExpressionIndex: 104
|
|
m_Value: {x: 0, y: 0, z: 0.2}
|
|
- m_ExpressionIndex: 120
|
|
m_Value: {x: -0.5, y: 0, z: 0}
|
|
m_Vector4f:
|
|
m_Array:
|
|
- m_ExpressionIndex: 17
|
|
m_Value: {x: 0, y: 0.093230695, z: 0.303, w: 0.43529412}
|
|
- m_ExpressionIndex: 88
|
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
|
- m_ExpressionIndex: 114
|
|
m_Value: {x: 0, y: 0, z: 0, w: 0.5}
|
|
m_Uint:
|
|
m_Array:
|
|
- m_ExpressionIndex: 2
|
|
m_Value: 1024
|
|
- m_ExpressionIndex: 5
|
|
m_Value: 32
|
|
- m_ExpressionIndex: 6
|
|
m_Value: 1
|
|
- m_ExpressionIndex: 7
|
|
m_Value: 128
|
|
- m_ExpressionIndex: 8
|
|
m_Value: 64
|
|
- m_ExpressionIndex: 24
|
|
m_Value: 0
|
|
- m_ExpressionIndex: 97
|
|
m_Value: 4294967295
|
|
m_Int:
|
|
m_Array:
|
|
- m_ExpressionIndex: 84
|
|
m_Value: 1
|
|
m_Matrix4x4f:
|
|
m_Array: []
|
|
m_AnimationCurve:
|
|
m_Array:
|
|
- m_ExpressionIndex: 21
|
|
m_Value:
|
|
serializedVersion: 2
|
|
m_Curve:
|
|
- serializedVersion: 3
|
|
time: 0
|
|
value: 0
|
|
inSlope: 2.773055
|
|
outSlope: 2.773055
|
|
tangentMode: 0
|
|
weightedMode: 0
|
|
inWeight: 0
|
|
outWeight: 0
|
|
- serializedVersion: 3
|
|
time: 1
|
|
value: 1
|
|
inSlope: -0.024295244
|
|
outSlope: -0.024295244
|
|
tangentMode: 0
|
|
weightedMode: 0
|
|
inWeight: 0
|
|
outWeight: 0
|
|
m_PreInfinity: 2
|
|
m_PostInfinity: 2
|
|
m_RotationOrder: 4
|
|
m_Gradient:
|
|
m_Array:
|
|
- m_ExpressionIndex: 9
|
|
m_Value:
|
|
serializedVersion: 2
|
|
key0: {r: 0, g: 0, b: 0, a: 0}
|
|
key1: {r: 1, g: 1, b: 1, a: 1}
|
|
key2: {r: 0, g: 0, b: 0, a: 1}
|
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
ctime0: 43562
|
|
ctime1: 44140
|
|
ctime2: 0
|
|
ctime3: 0
|
|
ctime4: 0
|
|
ctime5: 0
|
|
ctime6: 0
|
|
ctime7: 0
|
|
atime0: 43176
|
|
atime1: 44525
|
|
atime2: 65535
|
|
atime3: 0
|
|
atime4: 0
|
|
atime5: 0
|
|
atime6: 0
|
|
atime7: 0
|
|
m_Mode: 0
|
|
m_NumColorKeys: 2
|
|
m_NumAlphaKeys: 3
|
|
- m_ExpressionIndex: 50
|
|
m_Value:
|
|
serializedVersion: 2
|
|
key0: {r: 0, g: 0.16862746, b: 0.5, a: 0.53333336}
|
|
key1: {r: 0, g: 0.19888358, b: 0.48700982, a: 0.02745098}
|
|
key2: {r: 0, g: 0, b: 0, a: 0.02745098}
|
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
ctime0: 0
|
|
ctime1: 11951
|
|
ctime2: 0
|
|
ctime3: 0
|
|
ctime4: 0
|
|
ctime5: 0
|
|
ctime6: 0
|
|
ctime7: 0
|
|
atime0: 0
|
|
atime1: 3662
|
|
atime2: 61102
|
|
atime3: 65535
|
|
atime4: 0
|
|
atime5: 0
|
|
atime6: 0
|
|
atime7: 0
|
|
m_Mode: 0
|
|
m_NumColorKeys: 2
|
|
m_NumAlphaKeys: 4
|
|
- m_ExpressionIndex: 54
|
|
m_Value:
|
|
serializedVersion: 2
|
|
key0: {r: 0.048988387, g: 0.40279338, b: 1.0396423, a: 0.09803922}
|
|
key1: {r: 0.17058155, g: 0.2737964, b: 0.8820315, a: 0.09803922}
|
|
key2: {r: 0, g: 0, b: 0, a: 0}
|
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
ctime0: 0
|
|
ctime1: 27949
|
|
ctime2: 65535
|
|
ctime3: 0
|
|
ctime4: 0
|
|
ctime5: 0
|
|
ctime6: 0
|
|
ctime7: 0
|
|
atime0: 0
|
|
atime1: 65535
|
|
atime2: 0
|
|
atime3: 0
|
|
atime4: 0
|
|
atime5: 0
|
|
atime6: 0
|
|
atime7: 0
|
|
m_Mode: 0
|
|
m_NumColorKeys: 3
|
|
m_NumAlphaKeys: 2
|
|
- m_ExpressionIndex: 56
|
|
m_Value:
|
|
serializedVersion: 2
|
|
key0: {r: 0.048988387, g: 0.40279338, b: 1.0396423, a: 0.09803922}
|
|
key1: {r: 0.17058155, g: 0.2737964, b: 0.8820315, a: 0.09803922}
|
|
key2: {r: 0, g: 0, b: 0, a: 0}
|
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
ctime0: 1173
|
|
ctime1: 27949
|
|
ctime2: 65535
|
|
ctime3: 0
|
|
ctime4: 0
|
|
ctime5: 0
|
|
ctime6: 0
|
|
ctime7: 0
|
|
atime0: 0
|
|
atime1: 65535
|
|
atime2: 0
|
|
atime3: 0
|
|
atime4: 0
|
|
atime5: 0
|
|
atime6: 0
|
|
atime7: 0
|
|
m_Mode: 0
|
|
m_NumColorKeys: 3
|
|
m_NumAlphaKeys: 2
|
|
- m_ExpressionIndex: 57
|
|
m_Value:
|
|
serializedVersion: 2
|
|
key0: {r: 0, g: 0.8392157, b: 2, a: 1}
|
|
key1: {r: 0.1514774, g: 0.50246406, b: 0.8679245, a: 0.20392157}
|
|
key2: {r: 0, g: 0, b: 0, a: 0}
|
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
ctime0: 0
|
|
ctime1: 1928
|
|
ctime2: 0
|
|
ctime3: 0
|
|
ctime4: 0
|
|
ctime5: 0
|
|
ctime6: 0
|
|
ctime7: 0
|
|
atime0: 0
|
|
atime1: 60138
|
|
atime2: 65535
|
|
atime3: 0
|
|
atime4: 0
|
|
atime5: 0
|
|
atime6: 0
|
|
atime7: 0
|
|
m_Mode: 0
|
|
m_NumColorKeys: 2
|
|
m_NumAlphaKeys: 3
|
|
m_NamedObject:
|
|
m_Array:
|
|
- m_ExpressionIndex: 76
|
|
m_Value: {fileID: 2800000, guid: 8eb88e901d7d6004d8773c99a160e235, type: 3}
|
|
- m_ExpressionIndex: 102
|
|
m_Value: {fileID: 2800000, guid: f862439e215185f42ae8c32cb7831015, type: 3}
|
|
- m_ExpressionIndex: 109
|
|
m_Value: {fileID: 2800000, guid: 74e896a19278a1048978c24f721a426f, type: 3}
|
|
- m_ExpressionIndex: 116
|
|
m_Value: {fileID: 2800000, guid: 334b7d2bced85cd4e99cfeae42035f9a, type: 3}
|
|
- m_ExpressionIndex: 89
|
|
m_Value: {fileID: 4300000, guid: bc31775c24e3b8f41be97aa27409e4b3, type: 2}
|
|
- m_ExpressionIndex: 107
|
|
m_Value: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
|
|
- m_ExpressionIndex: 110
|
|
m_Value: {fileID: 4300000, guid: 2ebe19eb4ec080544bbeb6cdc97750bf, type: 2}
|
|
m_Bool:
|
|
m_Array:
|
|
- m_ExpressionIndex: 32
|
|
m_Value: 0
|
|
m_ExposedExpressions:
|
|
- nameId: ARUI-Hover
|
|
index: 32
|
|
- nameId: ARUI-Reticula
|
|
index: 35
|
|
m_Buffers:
|
|
- type: 1
|
|
size: 7168
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 4
|
|
element: 0
|
|
- name: texIndex
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 4
|
|
element: 3
|
|
- name: lifetime
|
|
type: 1
|
|
offset:
|
|
bucket: 4096
|
|
structure: 1
|
|
element: 0
|
|
- name: alive
|
|
type: 17
|
|
offset:
|
|
bucket: 5120
|
|
structure: 2
|
|
element: 0
|
|
- name: age
|
|
type: 1
|
|
offset:
|
|
bucket: 5120
|
|
structure: 2
|
|
element: 1
|
|
capacity: 1024
|
|
stride: 4
|
|
- type: 1
|
|
size: 512
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 4
|
|
element: 0
|
|
- name: lifetime
|
|
type: 1
|
|
offset:
|
|
bucket: 256
|
|
structure: 1
|
|
element: 0
|
|
- name: texIndex
|
|
type: 1
|
|
offset:
|
|
bucket: 320
|
|
structure: 1
|
|
element: 0
|
|
- name: alive
|
|
type: 17
|
|
offset:
|
|
bucket: 384
|
|
structure: 2
|
|
element: 0
|
|
- name: age
|
|
type: 1
|
|
offset:
|
|
bucket: 384
|
|
structure: 2
|
|
element: 1
|
|
capacity: 64
|
|
stride: 4
|
|
- type: 1
|
|
size: 256
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 4
|
|
element: 0
|
|
- name: lifetime
|
|
type: 1
|
|
offset:
|
|
bucket: 128
|
|
structure: 1
|
|
element: 0
|
|
- name: texIndex
|
|
type: 1
|
|
offset:
|
|
bucket: 160
|
|
structure: 1
|
|
element: 0
|
|
- name: alive
|
|
type: 17
|
|
offset:
|
|
bucket: 192
|
|
structure: 2
|
|
element: 0
|
|
- name: age
|
|
type: 1
|
|
offset:
|
|
bucket: 192
|
|
structure: 2
|
|
element: 1
|
|
capacity: 32
|
|
stride: 4
|
|
- type: 1
|
|
size: 1152
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 0
|
|
- name: targetPosition
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 4
|
|
- name: size
|
|
type: 1
|
|
offset:
|
|
bucket: 1024
|
|
structure: 1
|
|
element: 0
|
|
capacity: 128
|
|
stride: 4
|
|
- type: 1
|
|
size: 48
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 0
|
|
- name: alpha
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 3
|
|
- name: texIndex
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 4
|
|
- name: angleZ
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 8
|
|
element: 5
|
|
- name: lifetime
|
|
type: 1
|
|
offset:
|
|
bucket: 32
|
|
structure: 1
|
|
element: 0
|
|
- name: alive
|
|
type: 17
|
|
offset:
|
|
bucket: 36
|
|
structure: 1
|
|
element: 0
|
|
- name: particleId
|
|
type: 6
|
|
offset:
|
|
bucket: 40
|
|
structure: 1
|
|
element: 0
|
|
- name: age
|
|
type: 1
|
|
offset:
|
|
bucket: 44
|
|
structure: 1
|
|
element: 0
|
|
capacity: 4
|
|
stride: 4
|
|
- type: 1
|
|
size: 16
|
|
layout:
|
|
- name: position
|
|
type: 3
|
|
offset:
|
|
bucket: 0
|
|
structure: 4
|
|
element: 0
|
|
capacity: 4
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 4
|
|
size: 1000
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 4
|
|
size: 64
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 4
|
|
size: 64
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 0
|
|
size: 64
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
- type: 0
|
|
size: 64
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 4
|
|
size: 32
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 4
|
|
size: 32
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 0
|
|
size: 32
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
- type: 0
|
|
size: 32
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 4
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 1
|
|
size: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
capacity: 1
|
|
stride: 4
|
|
- type: 4
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 4
|
|
- type: 0
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
- type: 0
|
|
size: 1
|
|
layout: []
|
|
capacity: 0
|
|
stride: 8
|
|
m_TemporaryBuffers: []
|
|
m_CPUBuffers:
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
- capacity: 1
|
|
stride: 1
|
|
layout:
|
|
- name: spawnCount
|
|
type: 1
|
|
offset:
|
|
bucket: 0
|
|
structure: 1
|
|
element: 0
|
|
initialData:
|
|
data: 00000000
|
|
m_Events:
|
|
- name: OnPlay
|
|
playSystems: 000000000100000002000000
|
|
stopSystems:
|
|
- name: OnStop
|
|
playSystems:
|
|
stopSystems: 000000000100000002000000
|
|
- name: InitSequence
|
|
playSystems: 050000000400000003000000
|
|
stopSystems:
|
|
m_RuntimeVersion: 10
|
|
m_RendererSettings:
|
|
motionVectorGenerationMode: 0
|
|
shadowCastingMode: 0
|
|
receiveShadows: 0
|
|
reflectionProbeUsage: 0
|
|
lightProbeUsage: 0
|
|
m_CullingFlags: 3
|
|
m_UpdateMode: 0
|
|
m_PreWarmDeltaTime: 0.05
|
|
m_PreWarmStepCount: 0
|
|
m_InitialEventName: OnPlay
|
|
m_Systems:
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 1
|
|
values: []
|
|
tasks:
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 58
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 2
|
|
values: []
|
|
tasks:
|
|
- type: 268435456
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Rate
|
|
index: 91
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 3
|
|
values: []
|
|
tasks:
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 92
|
|
- nameId: Delay
|
|
index: 58
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 4
|
|
values: []
|
|
tasks:
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 70
|
|
- nameId: Delay
|
|
index: 58
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 70
|
|
- nameId: Delay
|
|
index: 59
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 70
|
|
- nameId: Delay
|
|
index: 69
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 61
|
|
- nameId: Delay
|
|
index: 60
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 63
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 64
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 70
|
|
- nameId: Delay
|
|
index: 65
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 66
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 70
|
|
- nameId: Delay
|
|
index: 67
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 68
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 86
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 62
|
|
- nameId: Delay
|
|
index: 113
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 268435457
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Count
|
|
index: 115
|
|
- nameId: Delay
|
|
index: 122
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 5
|
|
values:
|
|
- nameId: LoopDuration
|
|
index: 79
|
|
- nameId: LoopCount
|
|
index: 84
|
|
- nameId: DelayBeforeLoop
|
|
index: 3
|
|
tasks:
|
|
- type: 268435458
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: nb
|
|
index: 71
|
|
- nameId: period
|
|
index: 72
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 0
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: spawner_output
|
|
index: 6
|
|
values:
|
|
- nameId: LoopDuration
|
|
index: 3
|
|
- nameId: LoopCount
|
|
index: 84
|
|
- nameId: DelayBeforeLoop
|
|
index: 85
|
|
tasks:
|
|
- type: 268435456
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Rate
|
|
index: 42
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: -1
|
|
- type: 1
|
|
flags: 1
|
|
capacity: 1000
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 0
|
|
- nameId: sourceAttributeBuffer
|
|
index: 6
|
|
- nameId: deadList
|
|
index: 7
|
|
- nameId: deadListCount
|
|
index: 8
|
|
- nameId: spawner_input
|
|
index: 6
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 0
|
|
- nameId: deadListIn
|
|
index: 7
|
|
- nameId: deadListCount
|
|
index: 8
|
|
- nameId: sourceAttributeBuffer
|
|
index: 6
|
|
temporaryBuffers: []
|
|
values: []
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 0
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 0
|
|
- nameId: deadListOut
|
|
index: 7
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: deltaTime_a
|
|
index: 19
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 1
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 0
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: gradient_c
|
|
index: 99
|
|
- nameId: mainTexture
|
|
index: 102
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 2
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 0
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: gradient_c
|
|
index: 108
|
|
- nameId: distortionBlurMap
|
|
index: 102
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 9
|
|
- type: 1
|
|
flags: 3
|
|
capacity: 64
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 1
|
|
- nameId: sourceAttributeBuffer
|
|
index: 9
|
|
- nameId: deadList
|
|
index: 10
|
|
- nameId: deadListCount
|
|
index: 11
|
|
- nameId: spawner_input
|
|
index: 5
|
|
- nameId: indirectBuffer
|
|
index: 12
|
|
- nameId: sortBufferA
|
|
index: 13
|
|
- nameId: sortBufferB
|
|
index: 14
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 1
|
|
- nameId: deadListIn
|
|
index: 10
|
|
- nameId: deadListCount
|
|
index: 11
|
|
- nameId: sourceAttributeBuffer
|
|
index: 9
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: uniform_b
|
|
index: 36
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 3
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 1
|
|
- nameId: deadListOut
|
|
index: 10
|
|
- nameId: indirectBuffer
|
|
index: 12
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: deltaTime_a
|
|
index: 19
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 4
|
|
- type: 805306369
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 1
|
|
- nameId: inputBuffer
|
|
index: 12
|
|
- nameId: outputBuffer
|
|
index: 13
|
|
- nameId: deadListCount
|
|
index: 11
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: localToWorld
|
|
index: 123
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 21
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 1
|
|
- nameId: indirectBuffer
|
|
index: 12
|
|
- nameId: deadListCount
|
|
index: 11
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: gradient_e
|
|
index: 119
|
|
- nameId: mainTexture
|
|
index: 116
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
- nameId: indirectDraw
|
|
index: 1
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 5
|
|
- type: 1
|
|
flags: 3
|
|
capacity: 32
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 2
|
|
- nameId: sourceAttributeBuffer
|
|
index: 15
|
|
- nameId: deadList
|
|
index: 16
|
|
- nameId: deadListCount
|
|
index: 17
|
|
- nameId: spawner_input
|
|
index: 4
|
|
- nameId: indirectBuffer
|
|
index: 18
|
|
- nameId: sortBufferA
|
|
index: 19
|
|
- nameId: sortBufferB
|
|
index: 20
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 2
|
|
- nameId: deadListIn
|
|
index: 16
|
|
- nameId: deadListCount
|
|
index: 17
|
|
- nameId: sourceAttributeBuffer
|
|
index: 15
|
|
temporaryBuffers: []
|
|
values: []
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 6
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 2
|
|
- nameId: deadListOut
|
|
index: 16
|
|
- nameId: indirectBuffer
|
|
index: 18
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: deltaTime_a
|
|
index: 19
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 7
|
|
- type: 805306369
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 2
|
|
- nameId: inputBuffer
|
|
index: 18
|
|
- nameId: outputBuffer
|
|
index: 19
|
|
- nameId: deadListCount
|
|
index: 17
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: localToWorld
|
|
index: 123
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 22
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 2
|
|
- nameId: indirectBuffer
|
|
index: 18
|
|
- nameId: deadListCount
|
|
index: 17
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: gradient_d
|
|
index: 111
|
|
- nameId: mainTexture
|
|
index: 109
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
- nameId: indirectDraw
|
|
index: 1
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 8
|
|
- type: 2
|
|
flags: 0
|
|
capacity: 0
|
|
layer: 4294967295
|
|
buffers: []
|
|
values:
|
|
- nameId: mesh
|
|
index: 107
|
|
- nameId: transform
|
|
index: 106
|
|
- nameId: subMeshMask
|
|
index: 97
|
|
tasks:
|
|
- type: 1073741824
|
|
buffers: []
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: subMeshMask
|
|
index: 97
|
|
- nameId: _BackgroundColor
|
|
index: 114
|
|
- nameId: _DotColor
|
|
index: 88
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
- nameId:
|
|
index: 1519612219
|
|
processor: {fileID: -6465566751694194690, guid: 5b5d3a7b134e5f442a542a4c83065311,
|
|
type: 3}
|
|
shaderSourceIndex: -1
|
|
- type: 1
|
|
flags: 0
|
|
capacity: 128
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 3
|
|
- nameId: sourceAttributeBuffer
|
|
index: 21
|
|
- nameId: spawner_input
|
|
index: 3
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 3
|
|
- nameId: sourceAttributeBuffer
|
|
index: 21
|
|
temporaryBuffers: []
|
|
values: []
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 10
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 3
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: uniform_b
|
|
index: 40
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 11
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 3
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: uniform_b
|
|
index: 26
|
|
- nameId: uniform_c
|
|
index: 13
|
|
- nameId: Alive_f
|
|
index: 44
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 12
|
|
- type: 1
|
|
flags: 1
|
|
capacity: 1
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 4
|
|
- nameId: sourceAttributeBuffer
|
|
index: 22
|
|
- nameId: deadList
|
|
index: 23
|
|
- nameId: deadListCount
|
|
index: 24
|
|
- nameId: spawner_input
|
|
index: 2
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 4
|
|
- nameId: deadListIn
|
|
index: 23
|
|
- nameId: deadListCount
|
|
index: 24
|
|
- nameId: sourceAttributeBuffer
|
|
index: 22
|
|
temporaryBuffers: []
|
|
values: []
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 13
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 4
|
|
- nameId: deadListOut
|
|
index: 23
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: deltaTime_a
|
|
index: 19
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 14
|
|
- type: 1073741828
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 4
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Alive_d
|
|
index: 44
|
|
- nameId: mainTexture
|
|
index: 76
|
|
params:
|
|
- nameId: mesh
|
|
index: 89
|
|
- nameId: subMeshMask
|
|
index: 97
|
|
- nameId: sortPriority
|
|
index: 0
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 15
|
|
- type: 1073741828
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 4
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: uniform_b
|
|
index: 23
|
|
- nameId: Alive_e
|
|
index: 44
|
|
- nameId: mainTexture
|
|
index: 76
|
|
params:
|
|
- nameId: mesh
|
|
index: 110
|
|
- nameId: subMeshMask
|
|
index: 97
|
|
- nameId: sortPriority
|
|
index: 0
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 16
|
|
- type: 1
|
|
flags: 2
|
|
capacity: 1
|
|
layer: 4294967295
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: sourceAttributeBuffer
|
|
index: 25
|
|
- nameId: spawner_input
|
|
index: 1
|
|
- nameId: indirectBuffer
|
|
index: 26
|
|
- nameId: sortBufferA
|
|
index: 27
|
|
- nameId: sortBufferB
|
|
index: 28
|
|
values:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
tasks:
|
|
- type: 536870912
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: sourceAttributeBuffer
|
|
index: 25
|
|
temporaryBuffers: []
|
|
values: []
|
|
params:
|
|
- nameId: bounds_center
|
|
index: 43
|
|
- nameId: bounds_size
|
|
index: 14
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 17
|
|
- type: 805306368
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: indirectBuffer
|
|
index: 26
|
|
temporaryBuffers: []
|
|
values: []
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 18
|
|
- type: 805306369
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: inputBuffer
|
|
index: 26
|
|
- nameId: outputBuffer
|
|
index: 27
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: localToWorld
|
|
index: 123
|
|
params: []
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 23
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: indirectBuffer
|
|
index: 26
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Alive_c
|
|
index: 44
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
- nameId: indirectDraw
|
|
index: 1
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 19
|
|
- type: 1073741826
|
|
buffers:
|
|
- nameId: attributeBuffer
|
|
index: 5
|
|
- nameId: indirectBuffer
|
|
index: 26
|
|
temporaryBuffers: []
|
|
values:
|
|
- nameId: Alive_d
|
|
index: 44
|
|
params:
|
|
- nameId: sortPriority
|
|
index: 0
|
|
- nameId: indirectDraw
|
|
index: 1
|
|
processor: {fileID: 0}
|
|
shaderSourceIndex: 20
|
|
--- !u!114 &8926484042661614579
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: c1d66f9e59448b247b62112124b23213, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -1165, y: -1344}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661615967}
|
|
--- !u!114 &8926484042661614823
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 330e0fca1717dde4aaa144f48232aa64, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661614824}
|
|
m_ExposedName: ARUI-Hover
|
|
m_Exposed: 1
|
|
m_Order: 1
|
|
m_Category:
|
|
m_Min:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Max:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_IsOutput: 0
|
|
m_Tooltip:
|
|
m_Nodes:
|
|
- m_Id: 2
|
|
linkedSlots:
|
|
- outputSlot: {fileID: 8926484042661614824}
|
|
inputSlot: {fileID: 8926484042661616017}
|
|
position: {x: -480, y: -707}
|
|
expandedSlots: []
|
|
expanded: 0
|
|
--- !u!114 &8926484042661614824
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661614824}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661614823}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: False
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: o
|
|
m_serializedType:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661616017}
|
|
--- !u!114 &8926484042661615108
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: c7acf5424f3655744af4b8f63298fa0f, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -864, y: -1223}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots:
|
|
- {fileID: 8926484042661615994}
|
|
- {fileID: 8926484042661615110}
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661615111}
|
|
m_Operands:
|
|
- name: c
|
|
type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
- name: b
|
|
type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
--- !u!114 &8926484042661615110
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615110}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615108}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: b
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615113}
|
|
--- !u!114 &8926484042661615111
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615111}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615108}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name:
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661616016}
|
|
- {fileID: 8926484042661616018}
|
|
--- !u!114 &8926484042661615112
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 5d91ea3b9260bac49abf986d8a29ae4e, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -1134, y: -1194}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661615113}
|
|
--- !u!114 &8926484042661615113
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615113}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615112}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: "\u03B5"
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615110}
|
|
--- !u!114 &8926484042661615579
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 330e0fca1717dde4aaa144f48232aa64, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661615580}
|
|
m_ExposedName: Bounds
|
|
m_Exposed: 0
|
|
m_Order: 2
|
|
m_Category:
|
|
m_Min:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Max:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_IsOutput: 0
|
|
m_Tooltip:
|
|
m_Nodes: []
|
|
--- !u!114 &8926484042661615580
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children:
|
|
- {fileID: 8926484042661615581}
|
|
- {fileID: 8926484042661615585}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615579}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor,
|
|
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":2.0}}'
|
|
m_Space: 0
|
|
m_Property:
|
|
name: o
|
|
m_serializedType:
|
|
m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor,
|
|
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615581
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615580}
|
|
m_Children:
|
|
- {fileID: 8926484042661615582}
|
|
- {fileID: 8926484042661615583}
|
|
- {fileID: 8926484042661615584}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: center
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the center of the box.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615582
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615581}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615583
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615581}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615584
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615581}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: z
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615585
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615580}
|
|
m_Children:
|
|
- {fileID: 8926484042661615586}
|
|
- {fileID: 8926484042661615587}
|
|
- {fileID: 8926484042661615588}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: size
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the size of the box along each axis.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615586
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615585}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615587
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615585}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615588
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615585}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615580}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: z
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615828
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 330e0fca1717dde4aaa144f48232aa64, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661615829}
|
|
m_ExposedName: ARUI-Reticula
|
|
m_Exposed: 1
|
|
m_Order: 0
|
|
m_Category:
|
|
m_Min:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Max:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_IsOutput: 0
|
|
m_Tooltip:
|
|
m_Nodes:
|
|
- m_Id: 0
|
|
linkedSlots:
|
|
- outputSlot: {fileID: 8926484042661615829}
|
|
inputSlot: {fileID: 8926484042661615831}
|
|
position: {x: -1056, y: -546}
|
|
expandedSlots: []
|
|
expanded: 0
|
|
--- !u!114 &8926484042661615829
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615829}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615828}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: o
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615831}
|
|
--- !u!114 &8926484042661615830
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: e25f6e0f52a260847818fb8b116806ae, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -847, y: -607}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots:
|
|
- {fileID: 8926484042661615831}
|
|
- {fileID: 8926484042661615832}
|
|
m_OutputSlots:
|
|
- {fileID: 8926484042661616020}
|
|
condition: 4
|
|
--- !u!114 &8926484042661615831
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615831}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615830}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: left
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the left operand which will be compared to the right operand
|
|
based on the specified condition.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615829}
|
|
--- !u!114 &8926484042661615832
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615832}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615830}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0.5
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: right
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the right operand which will be compared to the left operand
|
|
based on the specified condition.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 0
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615942
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 9207a95457a3f994581249dbe0a3409d, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -287, y: -1243}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots:
|
|
- {fileID: 8926484042661616016}
|
|
m_OutputSlots: []
|
|
m_Label:
|
|
m_Data: {fileID: 0}
|
|
m_InputFlowSlot:
|
|
- link: []
|
|
- link:
|
|
- context: {fileID: 8926484042661615944}
|
|
slotIndex: 0
|
|
m_OutputFlowSlot:
|
|
- link: []
|
|
m_Subgraph: {fileID: 8926484042661614526, guid: a012d7e2d1963b5439bccd6478791f75,
|
|
type: 3}
|
|
m_InputFlowNames:
|
|
- OnStop
|
|
- InitSequence
|
|
--- !u!114 &8926484042661615944
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 2461f61b3c026d54db1951a4e17ab20e, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -274, y: -1437}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots: []
|
|
m_OutputSlots: []
|
|
m_Label:
|
|
m_Data: {fileID: 0}
|
|
m_InputFlowSlot:
|
|
- link: []
|
|
m_OutputFlowSlot:
|
|
- link:
|
|
- context: {fileID: 8926484042661615942}
|
|
slotIndex: 1
|
|
eventName: InitSequence
|
|
--- !u!114 &8926484042661615952
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 9207a95457a3f994581249dbe0a3409d, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 114350483966674976}
|
|
m_Children: []
|
|
m_UIPosition: {x: -281, y: -803}
|
|
m_UICollapsed: 0
|
|
m_UISuperCollapsed: 0
|
|
m_InputSlots:
|
|
- {fileID: 8926484042661616017}
|
|
- {fileID: 8926484042661616018}
|
|
- {fileID: 8926484042661616019}
|
|
m_OutputSlots: []
|
|
m_Label:
|
|
m_Data: {fileID: 0}
|
|
m_InputFlowSlot:
|
|
- link: []
|
|
- link: []
|
|
m_OutputFlowSlot:
|
|
- link: []
|
|
m_Subgraph: {fileID: 8926484042661614526, guid: b5da5f3c58215f3418e2f4836c7ac94f,
|
|
type: 3}
|
|
m_InputFlowNames:
|
|
- OnPlay
|
|
- OnStop
|
|
--- !u!114 &8926484042661615967
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children:
|
|
- {fileID: 8926484042661615968}
|
|
- {fileID: 8926484042661615981}
|
|
- {fileID: 8926484042661615982}
|
|
- {fileID: 8926484042661615983}
|
|
- {fileID: 8926484042661615984}
|
|
- {fileID: 8926484042661615985}
|
|
- {fileID: 8926484042661615988}
|
|
- {fileID: 8926484042661615989}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661614579}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: UnityEditor.VFX.CameraType, Unity.VisualEffectGraph.Editor,
|
|
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
m_SerializableObject: '{"transform":{"position":{"x":0.0,"y":0.0,"z":0.0},"angles":{"x":0.0,"y":0.0,"z":0.0},"scale":{"x":0.0,"y":0.0,"z":0.0}},"fieldOfView":0.0,"nearPlane":0.0,"farPlane":0.0,"aspectRatio":0.0,"pixelDimensions":{"x":0.0,"y":0.0},"depthBuffer":{"instanceID":0},"colorBuffer":{"instanceID":0}}'
|
|
m_Space: 1
|
|
m_Property:
|
|
name: o
|
|
m_serializedType:
|
|
m_SerializableType: UnityEditor.VFX.CameraType, Unity.VisualEffectGraph.Editor,
|
|
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615968
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 3e3f628d80ffceb489beac74258f9cf7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children:
|
|
- {fileID: 8926484042661615969}
|
|
- {fileID: 8926484042661615973}
|
|
- {fileID: 8926484042661615977}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: transform
|
|
m_serializedType:
|
|
m_SerializableType: UnityEditor.VFX.Transform, Unity.VisualEffectGraph.Editor,
|
|
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The camera's Transform in the world.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615969
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615968}
|
|
m_Children:
|
|
- {fileID: 8926484042661615970}
|
|
- {fileID: 8926484042661615971}
|
|
- {fileID: 8926484042661615972}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: position
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the transform position.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615970
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615969}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615971
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615969}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615972
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615969}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: z
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615973
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615968}
|
|
m_Children:
|
|
- {fileID: 8926484042661615974}
|
|
- {fileID: 8926484042661615975}
|
|
- {fileID: 8926484042661615976}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: angles
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 4
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the euler angles of the transform.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615974
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615973}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615975
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615973}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615976
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615973}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: z
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615977
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615968}
|
|
m_Children:
|
|
- {fileID: 8926484042661615978}
|
|
- {fileID: 8926484042661615979}
|
|
- {fileID: 8926484042661615980}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: scale
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: Sets the scale of the transform along each axis.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615978
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615977}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615979
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615977}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615980
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615977}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: z
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615981
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: fieldOfView
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 4
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 0
|
|
m_Min: 0
|
|
m_Max: 3.1415927
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: "The field of view is the height of the camera\u2019s view angle,
|
|
measured in degrees along the local Y axis."
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615982
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: nearPlane
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 1
|
|
m_Min: 0
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The near plane is the closest plane relative to the camera where
|
|
drawing occurs.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615983
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: farPlane
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 1
|
|
m_Min: 0
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The far plane is the furthest plane relative to the camera where
|
|
drawing occurs.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615984
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: aspectRatio
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 1
|
|
m_Min: 0
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: "The aspect ratio is the proportional relationship between the camera\u2019s
|
|
width and height."
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615985
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children:
|
|
- {fileID: 8926484042661615986}
|
|
- {fileID: 8926484042661615987}
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: pixelDimensions
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 1
|
|
m_Min: 0
|
|
m_Max: Infinity
|
|
m_Tooltip:
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The width and height of the camera in pixels.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615986
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615985}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: x
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615987
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615985}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: y
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615988
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f8347149e9296104c91893e675633125, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: depthBuffer
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Texture2DArray, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The depth buffer of the camera, containing the rendered depth information.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615989
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f8347149e9296104c91893e675633125, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 8926484042661615967}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615967}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 0}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType:
|
|
m_SerializableObject:
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: colorBuffer
|
|
m_serializedType:
|
|
m_SerializableType: UnityEngine.Texture2DArray, UnityEngine.CoreModule, Version=0.0.0.0,
|
|
Culture=neutral, PublicKeyToken=null
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The color buffer of the camera, containing the rendered color information.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661615994
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661615994}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615108}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0.03
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: c
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots: []
|
|
--- !u!114 &8926484042661616016
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661616016}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615942}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0.03
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: NearPlaneDistance
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615111}
|
|
--- !u!114 &8926484042661616017
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661616017}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615952}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: False
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: Hover
|
|
m_serializedType:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661614824}
|
|
--- !u!114 &8926484042661616018
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661616018}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615952}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: 0.03
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: Near Plane Distance
|
|
m_serializedType:
|
|
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661615111}
|
|
--- !u!114 &8926484042661616019
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661616019}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615952}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: True
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: Visible
|
|
m_serializedType:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes: []
|
|
m_Direction: 0
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661616020}
|
|
--- !u!114 &8926484042661616020
|
|
MonoBehaviour:
|
|
m_ObjectHideFlags: 0
|
|
m_CorrespondingSourceObject: {fileID: 0}
|
|
m_PrefabInstance: {fileID: 0}
|
|
m_PrefabAsset: {fileID: 0}
|
|
m_GameObject: {fileID: 0}
|
|
m_Enabled: 1
|
|
m_EditorHideFlags: 0
|
|
m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3}
|
|
m_Name:
|
|
m_EditorClassIdentifier:
|
|
m_Parent: {fileID: 0}
|
|
m_Children: []
|
|
m_UIPosition: {x: 0, y: 0}
|
|
m_UICollapsed: 1
|
|
m_UISuperCollapsed: 0
|
|
m_MasterSlot: {fileID: 8926484042661616020}
|
|
m_MasterData:
|
|
m_Owner: {fileID: 8926484042661615830}
|
|
m_Value:
|
|
m_Type:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
m_SerializableObject: False
|
|
m_Space: 2147483647
|
|
m_Property:
|
|
name: o
|
|
m_serializedType:
|
|
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
|
|
PublicKeyToken=b77a5c561934e089
|
|
attributes:
|
|
- m_Type: 3
|
|
m_Min: -Infinity
|
|
m_Max: Infinity
|
|
m_Tooltip: The result of the comparison.
|
|
m_Regex:
|
|
m_RegexMaxLength: 0
|
|
m_Direction: 1
|
|
m_LinkedSlots:
|
|
- {fileID: 8926484042661616019}
|