citro3d
Loading...
Searching...
No Matches
effect.h
Go to the documentation of this file.
1/**
2 * @file effect.h
3 * @brief Configure GPU state
4 */
5#pragma once
6#include "types.h"
7
8/**
9 * @brief Specifies mapping of depth values from normalized device coordinates to window coordinates.
10 * @param[in] bIsZBuffer Enables or disables depth range. The initial value is true.
11 * @param[in] zScale Specifies mapping of depth values from normalized device coordinates to window coordinates (nearVal - farVal). The initial value is -1.0f.
12 * @param[in] zOffset Sets the scale and units used to calculate depth values (nearVal + polygonOffset). The initial value is 0.0f.
13 */
14void C3D_DepthMap(bool bIsZBuffer, float zScale, float zOffset);
15
16/**
17 * @brief Specifies whether front-facing or back-facing facets can be culled.
18 * @param[in] mode Specifies whether front-facing, back-facing, or no facets are candidates for culling. The inital value is \ref GPU_CULL_BACK_CCW.
19 */
21
22/**
23 * @brief Sets front and back function and reference value for stencil testing
24 * @param[in] enable Enables or disables stencil test. The initial value is false.
25 * @param[in] function Specifies the test function. The initial value is \ref GPU_ALWAYS.
26 * @param[in] ref Specifies the reference value for the stencil test. ref is clamped to the range 02^n - 1 , where n is the number of bitplanes in the stencil buffer. The initial value is 0.
27 * @param[in] inputMask Specifies a mask that is ANDed with both the reference value and the stored stencil value when the test is done. The initial value is all 1's.
28 * @param[in] writeMask Specifies a bit mask to enable and disable writing of individual bits in the stencil planes. Initially, the mask is all 0's.
29 */
30void C3D_StencilTest(bool enable, GPU_TESTFUNC function, int ref, int inputMask, int writeMask);
31
32/**
33 * @brief Sets front and back stencil test actions
34 * @param[in] sfail Specifies the action to take when the stencil test fails. The initial value is \ref GPU_STENCIL_KEEP.
35 * @param[in] dfail Specifies the stencil action when the stencil test passes, but the depth test fails. The initial value is \ref GPU_STENCIL_KEEP.
36 * @param[in] pass Specifies the stencil action when both the stencil test and the depth test pass, or when the stencil test passes and either there is no depth buffer or depth testing is not enabled. The initial value is \ref GPU_STENCIL_KEEP.
37 */
39
40/**
41 * @brief Sets the blend color
42 * @param[in] color Specifies the RGBA blend color. The initial value is 0.
43 */
45
46void C3D_EarlyDepthTest(bool enable, GPU_EARLYDEPTHFUNC function, u32 ref);
47
48/**
49 * @brief Configures depth testing options.
50 * @note Setting the enable parameter to false will not also disable depth writes. It will instead behave as if the depth function were set to \ref GPU_ALWAYS. To completely disable depth-related operations, the enable parameter must be false, and the writemask should be \ref GPU_WRITE_COLOR.
51 * @param[in] enable If true, do depth comparisons on the outgoing fragments and write to the depth buffer. The initial value is true.
52 * @param[in] function Specifies the depth comparison function. The initial value is \ref GPU_GREATER.
53 * @param[in] writemask Configures buffer writemasks for the depth test stage. The initial value is \ref GPU_WRITE_ALL.
54 */
55void C3D_DepthTest(bool enable, GPU_TESTFUNC function, GPU_WRITEMASK writemask);
56
57/**
58 * @brief Configures Alpha testing
59 * @param[in] enable Enables or disables alpha test. The initial value is false.
60 * @param[in] function Specifies the alpha comparison function. The initial value is \ref GPU_ALWAYS.
61 * @param[in] ref Specifies the reference value that incoming alpha values are compared to from 0 to 0xFF. The intial value is 0.
62 */
63void C3D_AlphaTest(bool enable, GPU_TESTFUNC function, int ref);
64
65/**
66 * @brief Configures blend functions
67 * @note This causes LogicOp settings to be ignored, LogicOp and alpha blending cannot be used simultaneously.
68 * @param[in] colorEq Specifies how source and destination colors are combined. The initial value is \ref GPU_BLEND_ADD.
69 * @param[in] alphaEq Specifies how source and destination alphas are combined. The initial value is \ref GPU_BLEND_ADD.
70 * @param[in] srcClr Specifies how the red, green, and blue source blending factors are computed. The initial value is \ref GPU_SRC_ALPHA.
71 * @param[in] dstClr Specifies how the red, green, and blue destination blending factors are computed. The initial value is \ref GPU_ONE_MINUS_SRC_ALPHA.
72 * @param[in] srcAlpha Specifies how the alpha source blending factors are computed. The initial value is \ref GPU_SRC_ALPHA.
73 * @param[in] dstAlpha Specifies how the alpha destination blending factors are computed. The initial value is \ref GPU_ONE_MINUS_SRC_ALPHA.
74 */
76
77/**
78 * @brief Configures logical pixel write operation during rendering
79 * @note This resets existing alpha blending settings, LogicOp and alpha blending cannot be used simultaneously.
80 * @param[in] op Operation to perform when writing incomming pixels to existing framebuffer.
81 */
83
84/**
85 * @brief Configures fragment writing mode.
86 * @note When using \ref GPU_FRAGOPMODE_SHADOW, the secondary depth stencil texture must be disabled.
87 * @param[in] mode Mode used for writing fragments. \ref GPU_FRAGOPMODE_GL enables standard color/depth rendering,
88 * \ref GPU_FRAGOPMODE_SHADOW enables writes color fragments as a D24X shadow depthmap (treated as RGBA8).
89 */
91
92void C3D_FragOpShadow(float scale, float bias);
void C3D_DepthMap(bool bIsZBuffer, float zScale, float zOffset)
Specifies mapping of depth values from normalized device coordinates to window coordinates.
void C3D_AlphaTest(bool enable, GPU_TESTFUNC function, int ref)
Configures Alpha testing.
void C3D_CullFace(GPU_CULLMODE mode)
Specifies whether front-facing or back-facing facets can be culled.
void C3D_FragOpMode(GPU_FRAGOPMODE mode)
Configures fragment writing mode.
void C3D_StencilTest(bool enable, GPU_TESTFUNC function, int ref, int inputMask, int writeMask)
Sets front and back function and reference value for stencil testing.
void C3D_StencilOp(GPU_STENCILOP sfail, GPU_STENCILOP dfail, GPU_STENCILOP pass)
Sets front and back stencil test actions.
void C3D_ColorLogicOp(GPU_LOGICOP op)
Configures logical pixel write operation during rendering.
void C3D_AlphaBlend(GPU_BLENDEQUATION colorEq, GPU_BLENDEQUATION alphaEq, GPU_BLENDFACTOR srcClr, GPU_BLENDFACTOR dstClr, GPU_BLENDFACTOR srcAlpha, GPU_BLENDFACTOR dstAlpha)
Configures blend functions.
void C3D_BlendingColor(u32 color)
Sets the blend color.
void C3D_DepthTest(bool enable, GPU_TESTFUNC function, GPU_WRITEMASK writemask)
Configures depth testing options.
GPU_BLENDFACTOR
GPU_LOGICOP
GPU_WRITEMASK
GPU_EARLYDEPTHFUNC
GPU_FRAGOPMODE
GPU_STENCILOP
GPU_TESTFUNC
GPU_BLENDEQUATION
GPU_CULLMODE
uint32_t u32