Difference between revisions of "Atomic (RW Section)"

From GTAMods Wiki
Jump to navigation Jump to search
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{RW Section|Atomic|0x0014}}
+
{{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]].
  
==Binary Structure==
+
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.
  DWORD Zero-based [[Frame_(RW_Section)|Frame]] Index
+
 
DWORD Zero-based [[Geometry_(RW_Section)|Geometry]] Index
+
==Structure==
DWORD Unknown1 Always 5 ?
+
 
DWORD Unknown2 Always 0 ?
+
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).
 +
 
 +
<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:
 +
 
 +
  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 (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.