Line 1: |
Line 1: |
− | This page is intended to contain more higher-level explanation of concepts and features provided by the 3DS GPU. For more detailed register-level information check [[GPU Internal Registers]] or [[GPU Commands]]. | + | This page is intended to contain more higher-level explanation of concepts and features provided by the 3DS GPU. For more detailed register-level information check [[GPU:Internal Registers]] or [[GPU Commands]]. |
| + | |
| + | = Geometry Pipeline = |
| + | |
| + | == Fixed Vertex Attributes == |
| + | |
| + | If a certain vertex attribute is constant for the duration of a draw call, instead of specifying a vertex array with repeated contents or changing the shader to use a uniform, *fixed vertex attributes* can be used. They let you specify a fixed value, which will be assumed by the attribute for all vertices of the batch. |
| + | |
| + | To use a fixed attribute, set the bit corresponding to the attribute in [[GPU:Internal Registers#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]] and ensure that no vertex arrays are configured for the attribute. (Any configured arrays will override the fixed value, regardless of the bit setting.) Even if a vertex array isn't being used for the attribute it still needs to be counted in the number of active attributes specified in the same register. |
| + | |
| + | To specify the actual value of the fixed attribute, write the attribute index to [[GPU:Internal Registers#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]] followed by writes with packed a float24 4-tuple to the 3 [[GPU:Internal Registers#GPUREG_FIXEDATTRIB_DATA|GPUREG_FIXEDATTRIB_DATA]] registers. The value is always specified as a float 4-component vector, the configured type is ignored. |