{
	"version" : 1,
	"replacementkey" : "fluidsimulation",
	"name" : "ui_editor_effect_advanced_fluid_simulation_title",
	"description" : "ui_editor_effect_advanced_fluid_simulation_description",
	"group" : "interactive",
	"performance" : "veryexpensive",
	"preview" : "preview/project.json",
	"passes" :
	[
		{
			"material" : "materials/effects/fluidsimulation_curl.json",
			"target" : "_rt_SmokeCurl",
			"bind" :
			[
				{
					"name" : "_rt_SmokeVelocity1",
					"index" : 0
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_vorticity.json",
			"target" : "_rt_SmokeVelocity2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeVelocity1",
					"index" : 0
				},
				{
					"name" : "_rt_SmokeCurl",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_divergence.json",
			"target" : "_rt_SmokeDivergence",
			"bind" :
			[
				{
					"name" : "_rt_SmokeVelocity2",
					"index" : 0
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_clear.json",
			"target" : "_rt_SmokePressure2",
			"bind" :
			[
				{
					"name" : "_rt_SmokePressure1",
					"index" : 0
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure1",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure1",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure1",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure1",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure1",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure1",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure1",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure1",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_pressure.json",
			"target" : "_rt_SmokePressure1",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDivergence",
					"index" : 0
				},
				{
					"name" : "_rt_SmokePressure2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_gradientsubtract.json",
			"target" : "_rt_SmokeVelocity1",
			"bind" :
			[
				{
					"name" : "_rt_SmokePressure1",
					"index" : 0
				},
				{
					"name" : "_rt_SmokeVelocity2",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_advection.json",
			"target" : "_rt_SmokeVelocity2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeVelocity1",
					"index" : 0
				},
				{
					"name" : "_rt_SmokeVelocity1",
					"index" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_advection_dye.json",
			"target" : "_rt_SmokeDye2",
			"bind" :
			[
				{
					"name" : "_rt_SmokeVelocity2",
					"index" : 0
				},
				{
					"name" : "_rt_SmokeDye1",
					"index" : 1
				},
				{
					"name" : "previous",
					"index" : 2
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_normal.json",
			"target" : "_rt_SmokeNormal",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDye2",
					"index" : 0
				}
			],
			"conditions" :
			[
				{
					"LIGHTING" : 1
				}
			]
		},
		{
			"material" : "materials/effects/fluidsimulation_combine.json",
			"bind" :
			[
				{
					"name" : "_rt_SmokeDye2",
					"index" : 0
				},
				{
					"name" : "previous",
					"index" : 1
				},
				{
					"name" : "_rt_SmokeNormal",
					"index" : 2,
					"conditions" :
					[
						{
							"LIGHTING" : 1
						}
					]
				},
				{
					"name" : "_rt_SmokeVelocity2",
					"index" : 4,
					"conditions" :
					[
						{
							"RENDERING" : 3
						}
					]
				}
			]
		},
		{
			"command" : "swap",
			"source" : "_rt_SmokeVelocity1",
			"target" : "_rt_SmokeVelocity2"
		},
		{
			"command" : "swap",
			"source" : "_rt_SmokeDye1",
			"target" : "_rt_SmokeDye2"
		}
	],
	"fbos" :
	[
		{
			"name" : "_rt_SmokeVelocity1",
			"fit" : 256,
			"format" : "rg1616f",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeVelocity2",
			"fit" : 256,
			"format" : "rg1616f",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokePressure1",
			"fit" : 256,
			"format" : "r16f",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokePressure2",
			"fit" : 256,
			"format" : "r16f",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeDivergence",
			"fit" : 256,
			"format" : "r16f",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeCurl",
			"fit" : 256,
			"format" : "r16f",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeDye1",
			"scale" : 2,
			"format" : "rgba_backbuffer",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeDye2",
			"scale" : 2,
			"format" : "rgba_backbuffer",
			"clear" : "0 0 0 0",
			"unique" : true
		},
		{
			"name" : "_rt_SmokeNormal",
			"scale" : 2,
			"format" : "rgba8888",
			"conditions" :
			[
				{
					"LIGHTING" : 1
				}
			]
		}
	],
	"functions" : {
		"clearVelocity" : {
			"action" : "clear",
			"fbos" : [ "_rt_SmokeVelocity1", "_rt_SmokeVelocity2" ]
		},
		"clearDye" : {
			"action" : "clear",
			"fbos" : [ "_rt_SmokeDye1", "_rt_SmokeDye2" ]
		}
	},
	"dependencies" :
	[
		"materials/effects/fluidsimulation_advection.json",
		"materials/effects/fluidsimulation_advection_dye.json",
		"materials/effects/fluidsimulation_clear.json",
		"materials/effects/fluidsimulation_combine.json",
		"materials/effects/fluidsimulation_curl.json",
		"materials/effects/fluidsimulation_divergence.json",
		"materials/effects/fluidsimulation_gradientsubtract.json",
		"materials/effects/fluidsimulation_pressure.json",
		"materials/effects/fluidsimulation_vorticity.json",
		"materials/effects/fluidsimulation_normal.json",
		"shaders/effects/fluidsimulation_advection.frag",
		"shaders/effects/fluidsimulation_advection.vert",
		"shaders/effects/fluidsimulation_clear.frag",
		"shaders/effects/fluidsimulation_clear.vert",
		"shaders/effects/fluidsimulation_combine.frag",
		"shaders/effects/fluidsimulation_combine.vert",
		"shaders/effects/fluidsimulation_curl.frag",
		"shaders/effects/fluidsimulation_curl.vert",
		"shaders/effects/fluidsimulation_divergence.frag",
		"shaders/effects/fluidsimulation_divergence.vert",
		"shaders/effects/fluidsimulation_gradientsubtract.frag",
		"shaders/effects/fluidsimulation_gradientsubtract.vert",
		"shaders/effects/fluidsimulation_pressure.frag",
		"shaders/effects/fluidsimulation_pressure.vert",
		"shaders/effects/fluidsimulation_vorticity.frag",
		"shaders/effects/fluidsimulation_vorticity.vert",
		"shaders/effects/fluidsimulation_normal.frag",
		"shaders/effects/fluidsimulation_normal.vert",
	],
	"gizmos" :
	[
		{
			"type" : "EffectPointEmitter",
			"condition" :
			{
				"POINTEMITTER" : {
					"op" : "ge",
					"value" : 1
				}
			},
			"vars" :
			{
				"center" : "emitterPos0",
				"angle" : "emitterAngle0",
				"size" : "emitterSize0",
				"speed" : "emitterSpeed0"
			}
		},
		{
			"type" : "EffectPointEmitter",
			"condition" :
			{
				"POINTEMITTER" : {
					"op" : "ge",
					"value" : 2
				}
			},
			"vars" :
			{
				"center" : "emitterPos1",
				"angle" : "emitterAngle1",
				"size" : "emitterSize1",
				"speed" : "emitterSpeed1"
			}
		},
		{
			"type" : "EffectPointEmitter",
			"condition" :
			{
				"POINTEMITTER" : {
					"op" : "ge",
					"value" : 3
				}
			},
			"vars" :
			{
				"center" : "emitterPos2",
				"angle" : "emitterAngle2",
				"size" : "emitterSize2",
				"speed" : "emitterSpeed2"
			}
		},
		{
			"type" : "EffectPointEmitter",
			"condition" :
			{
				"POINTEMITTER" : {
					"op" : "ge",
					"value" : 4
				}
			},
			"vars" :
			{
				"center" : "emitterPos3",
				"angle" : "emitterAngle3",
				"size" : "emitterSize3",
				"speed" : "emitterSpeed3"
			}
		},
		{
			"type" : "EffectLineEmitter",
			"condition" :
			{
				"LINEEMITTER" : {
					"op" : "ge",
					"value" : 1
				}
			},
			"vars" :
			{
				"p0" : "lineEmitterPosA0",
				"p1" : "lineEmitterPosB0",
				"angle" : "lineEmitterAngle0",
				"size" : "lineEmitterSize0",
				"speed" : "lineEmitterSpeed0"
			}
		},
		{
			"type" : "EffectLineEmitter",
			"condition" :
			{
				"LINEEMITTER" : {
					"op" : "ge",
					"value" : 2
				}
			},
			"vars" :
			{
				"p0" : "lineEmitterPosA1",
				"p1" : "lineEmitterPosB1",
				"angle" : "lineEmitterAngle1",
				"size" : "lineEmitterSize1",
				"speed" : "lineEmitterSpeed1"
			}
		},
		{
			"type" : "EffectLineEmitter",
			"condition" :
			{
				"LINEEMITTER" : {
					"op" : "ge",
					"value" : 3
				}
			},
			"vars" :
			{
				"p0" : "lineEmitterPosA2",
				"p1" : "lineEmitterPosB2",
				"angle" : "lineEmitterAngle2",
				"size" : "lineEmitterSize2",
				"speed" : "lineEmitterSpeed2"
			}
		},
		{
			"type" : "EffectPerspectiveUV",
			"condition" :
			{
				"PERSPECTIVE" : 1
			},
			"vars" :
			{
				"p0" : "point0",
				"p1" : "point1",
				"p2" : "point2",
				"p3" : "point3"
			}
		}
	]
}