Difference between revisions of "Atomic (RW Section)"
m |
|||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | {{RW Section|Atomic| | + | {{RW Section |
+ | | NAME = Atomic | ||
+ | | VENDORNAME = Criterion Games | ||
+ | | MODULENAME = Core | ||
+ | | MODULEID = 000000 | ||
+ | | IDENTIFIER = 14 | ||
+ | | PARENTS = [[Clump (RW Section)|Clump]] | ||
+ | | CHILDREN = [[Struct (RW Section)|Struct]], [[Geometry (RW Section)|Geometry]] ''([[Atomic (RW Section)#Nested Geometry|optional]])'' | ||
+ | | EXTENSIONS = [[Right To Render (RW Section)|Right To Render]], [[Particles PLG (RW Section)|Particles PLG]], [[Pipeline Set (RW Section)|Pipeline Set]], [[User Data PLG (RW Section)|User Data PLG]], [[Material Effects PLG (RW Section)|Material Effects PLG]] | ||
+ | }} | ||
− | '''Atomic''' is a container section used in [[model file|DFF files]] as child of a [[Clump (RW Section)|Clump]] section. It is normally accompanied by a [[Struct (RW Section)#Atomic|Struct]] section. An atomic section can associate a Frame with a Geometry. | + | '''Atomic''' is a container section used in [[model file|DFF files]] as child of a [[Clump (RW Section)|Clump]] section. It is normally accompanied by a [[Struct (RW Section)#Atomic|Struct]] section. An atomic section can associate a [[Frame List (RW Section)|Frame]] with a [[Geometry (RW Section)|Geometry]]. |
+ | |||
+ | Atomics are - generally speaking - converted to draw-calls directly. They therefor resemble parts of the geometry (sub-geometries) that should be rendered "as one", utilizing a certain rendering pipeline. They are transformed from object-space directly or indirectly based on the transformation rules that are set for the Frame. | ||
==Structure== | ==Structure== | ||
− | An atomic section | + | |
+ | An atomic section contains Struct, Geometry (optional) and Extension sections. | ||
A Struct section has 16 bytes in size (may be different in some RW versions). | A Struct section has 16 bytes in size (may be different in some RW versions). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | '' | + | <source lang="c"> |
+ | struct rwAtomicStruct { | ||
+ | unsigned int frameIndex; // Index of the frame within the clump's frame list. | ||
+ | unsigned int geometryIndex; // Index of geometry within the clump's geometry list. | ||
+ | unsigned int flags; // See below. | ||
+ | unsigned int unused; // Typically 0. | ||
+ | }; | ||
+ | </source> | ||
+ | |||
+ | ====Flags==== | ||
There are only 2 options available: | There are only 2 options available: | ||
+ | |||
0x01 rpATOMICCOLLISIONTEST - A generic collision flag to indicate that the atomic should be considered in collision tests. | 0x01 rpATOMICCOLLISIONTEST - A generic collision flag to indicate that the atomic should be considered in collision tests. | ||
It wasn't used in GTA games since they don't use RW collision system. | It wasn't used in GTA games since they don't use RW collision system. | ||
0x04 rpATOMICRENDER - The atomic is rendered if it is in the view frustum. It's set to TRUE for all models by default. | 0x04 rpATOMICRENDER - The atomic is rendered if it is in the view frustum. It's set to TRUE for all models by default. | ||
− | == | + | ==Nested Geometry== |
− | + | ||
+ | An atomic may contain a [[Geometry (RW Section)|geometry]] as a child section. It may exist only if [[Clump (RW Section)|Clump]]'s [[Geometry List (RW Section)|Geometry List]] is empty. | ||
− | + | {{N|SA|VC|3}} | |
− | |||
− | |||
− |
Latest revision as of 11:56, 11 September 2020
Atomic | |
---|---|
RenderWare Stream Section | |
Vendor | Criterion Games |
Module | Core |
Module ID | 0x000000
|
Identifier | 0x14
|
Chunk ID | 0x00000014
|
Versions | All |
Hierarchy | |
Parents: Clump | |
Children: Struct, Geometry (optional) | |
Extensions: Right To Render, Particles PLG, Pipeline Set, User Data PLG, Material Effects PLG | |
File Format |
Atomic is a container section used in DFF files as child of a Clump section. It is normally accompanied by a Struct section. An atomic section can associate a Frame with a Geometry.
Atomics are - generally speaking - converted to draw-calls directly. They therefor resemble parts of the geometry (sub-geometries) that should be rendered "as one", utilizing a certain rendering pipeline. They are transformed from object-space directly or indirectly based on the transformation rules that are set for the Frame.
Structure
An atomic section contains Struct, Geometry (optional) and Extension sections. A Struct section has 16 bytes in size (may be different in some RW versions).
struct rwAtomicStruct {
unsigned int frameIndex; // Index of the frame within the clump's frame list.
unsigned int geometryIndex; // Index of geometry within the clump's geometry list.
unsigned int flags; // See below.
unsigned int unused; // Typically 0.
};
Flags
There are only 2 options available:
0x01 rpATOMICCOLLISIONTEST - A generic collision flag to indicate that the atomic should be considered in collision tests. It wasn't used in GTA games since they don't use RW collision system. 0x04 rpATOMICRENDER - The atomic is rendered if it is in the view frustum. It's set to TRUE for all models by default.
Nested Geometry
An atomic may contain a geometry as a child section. It may exist only if Clump's Geometry List is empty.