Difference between revisions of "Atomic (RW Section)"

From GTAMods Wiki
Jump to navigation Jump to search
m
 
(5 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.  
 
  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.
  
==Child Sections==
+
==Nested Geometry==
*[[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.
+
 
 +
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.
 
*[[Pipeline Set (RW Section)|Pipeline Set]] - optional. Used to set up atomic's custom rendering pipeline.
 
*[[Material Effects PLG (RW Section)|Material Effects PLG]] - 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.