SWHC (File Format): Difference between revisions
→Properties
imported>Jackoalan |
imported>Jackoalan |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{research| | {{research|1|Properties beyond MP1 need to be discovered and documented}} | ||
The '''SWHC''' [[ | The '''SWHC''' [[Particle Script|particle script]] format is used to build swoosh effects in the ''Metroid Prime'' series. | ||
Swooshes are characterized as dynamically-generated, | Swooshes are characterized as dynamically-generated triangles "brushed" into space. | ||
Each swoosh system emits ''particle instances'' once per frame, connecting each new instance with the previous instance. | |||
The system will not render until it has a history of ''at least'' 2 swoosh particles (2 frames of updates). Swoosh cross-sections may | |||
form simple planes through space (<code>SIDE==2</code>) or extruded prism shapes (<code>SIDE>=3</code>). | |||
To smooth out intra-frame geometry, vertices connecting particle instances may be calculated using [[wikipedia:Tricubic interpolation|tricubic interpolation]]. | |||
SPLN defines the number of subdivisions with which to perform interpolation. | |||
== Properties == | == Properties == | ||
Line 28: | Line 35: | ||
{{ParticlePropertyRow|COLR|ColorElement|Color|Particle Creation and Update|Modulation color of swoosh surfaces|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|COLR|ColorElement|Color|Particle Creation and Update|Modulation color of swoosh surfaces|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|SIDE|IntElement|Side Count|System Init|Count of swoosh cross-section sides (2 for plane, 3+ for extruded prism)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|SIDE|IntElement|Side Count|System Init|Count of swoosh cross-section sides (2 for plane, 3+ for extruded prism)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|IROT|FloatElement| | {{ParticlePropertyRow|IROT|FloatElement|Initial Rotation|Particle Creation|Rotation bias evaluated for new particle instances (in degrees)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|ROTM|FloatElement|Rotation Master|Particle Update|Rotation bias evaluated per particle instance, per frame (in degrees)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|ROTM|FloatElement|Rotation Master|Particle Update|Rotation bias evaluated per particle instance, per frame (in degrees)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|POFS|VectorElement|Particle Offset|Particle Creation|Local translation bias evaluated for new particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|POFS|VectorElement|Particle Offset|Particle Creation|Local translation bias evaluated for new particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|IVEL|VectorElement| | {{ParticlePropertyRow|IVEL|VectorElement|Initial Velocity|Particle Creation|Relative velocity evaluated for new particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|NPOS|VectorElement| | {{ParticlePropertyRow|NPOS|VectorElement|Next Position|Particle Update|Local translation bias updated per particle instance, per frame|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|VELM|ModVectorElement|Velocity 1|Particle Update|Continuous position and velocity source of particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|VELM|ModVectorElement|Velocity 1|Particle Update|Continuous position and velocity source of particle instances|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|VLM2|ModVectorElement|Velocity 2|Particle Update|Second position and velocity source evaluated after VELM|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|VLM2|ModVectorElement|Velocity 2|Particle Update|Second position and velocity source evaluated after VELM|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
Line 38: | Line 45: | ||
{{ParticlePropertyRow|TEXR|UVElement|Texture|System Render|Texture and UV source for swoosh surfaces|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|TEXR|UVElement|Texture|System Render|Texture and UV source for swoosh surfaces|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|TSPN|IntElement|Texture Span|System Render|Count of particle instances over which to scale UV coordinate cycle|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | {{ParticlePropertyRow|TSPN|IntElement|Texture Span|System Render|Count of particle instances over which to scale UV coordinate cycle|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|LLRD| | {{ParticlePropertyRow|LLRD|bool|Left Radius for Right|System Init|Use LRAD value for RRAD|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|CROS| | {{ParticlePropertyRow|CROS|bool|Cross|System Init|Intersect surfaces across cross-section verts, as opposed to a non-intersecting prism|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|VLS1| | {{ParticlePropertyRow|VLS1|bool|Local Velocity 1|System Init|Evaluate VELM in particle-local space|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|VLS2| | {{ParticlePropertyRow|VLS2|bool|Local Velocity 2|System Init|Evaluate VLM2 in particle-local space|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|SROT| | {{ParticlePropertyRow|SROT|bool|Single Rotation|System Init|Update IROT per particle instance, per frame and ignore ROTM, otherwise once per system update|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|WIRE| | {{ParticlePropertyRow|WIRE|bool|Wireframe|System Init|Render surfaces as triangle wireframe|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|TEXW| | {{ParticlePropertyRow|TEXW|bool|{{unknown}}|System Init|Unused|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|AALP| | {{ParticlePropertyRow|AALP|bool|Additive Alpha|System Init|Draw using additive alpha blending|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|ZBUF| | {{ParticlePropertyRow|ZBUF|bool|Z-buffer Update|System Init|Enable Z-buffer updates|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|ORNT| | {{ParticlePropertyRow|ORNT|bool|View Orient|System Init|Render surface facing view (2-SIDE only, no SPLN)|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
{{ParticlePropertyRow|CRND| | {{ParticlePropertyRow|CRND|bool|Clock Random|System Init|Use current CPU time for random seed, rather than 99|{{check}}|{{nocheck}}|{{nocheck}}|{{nocheck}}|{{nocheck}}}} | ||
|} | |} |