Difference between revisions of "Atomic (RW Section)"

From GTAMods Wiki
Jump to navigation Jump to search
m
 
(7 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]].
 +
 
 +
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 contain Struct, Geometry (optional) and Extension sections.
+
 
 +
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).
struct rwAtomicStruct
 
{
 
    unsigned int frameIndex; // zero-based index
 
    unsigned int geometryIndex; // zero-based index
 
    unsigned int flags;
 
    unsigned int unused; // sets to 0 by default
 
};
 
  
'''Flags'''
+
<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. 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.
 
  
==Child Sections==
+
0x01 rpATOMICCOLLISIONTEST - A generic collision flag to indicate that the atomic should be considered in collision tests.
*[[Geometry (RW Section)|Geometry]] - optional. A geometry linked to this atomic and stored internally. It may exist only if [[Clump (RW Section)|Clump]]'s [[Geometry List (RW Section)|Geometry List]] is empty.
+
                              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.
  
==Extension==
+
{{N|SA|VC|3}}
*[[Right To Render (RW Section)|Right To Render]] - optional. Used for Skin Rights or/and Normal Map Rights.
 
*[[Material Effects PLG (RW Section)|Material Effects PLG]] - optional. Used to set up atomic's custom rendering pipeline.
 
*[[Right To Render (RW Section)|Right To Render]] - optional. Determines if atomic uses MatFx effects and thus must be rendered via MatFx rendering pipeline.
 

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.