1.. _depth-stencil-alpha: 2 3Depth, Stencil, & Alpha 4======================= 5 6These three states control the depth, stencil, and alpha tests, used to 7discard fragments that have passed through the fragment shader. 8 9Traditionally, these three tests have been clumped together in hardware, so 10they are all stored in one structure. 11 12During actual execution, the order of operations done on fragments is always: 13 14* Alpha 15* Stencil 16* Depth 17 18Depth Members 19------------- 20 21enabled 22 Whether the depth test is enabled. 23writemask 24 Whether the depth buffer receives depth writes. 25func 26 The depth test function. One of PIPE_FUNC. 27 28Stencil Members 29--------------- 30 31enabled 32 Whether the stencil test is enabled. For the second stencil, whether the 33 two-sided stencil is enabled. If two-sided stencil is disabled, the other 34 fields for the second array member are not valid. 35func 36 The stencil test function. One of PIPE_FUNC. 37valuemask 38 Stencil test value mask; this is ANDed with the value in the stencil 39 buffer and the reference value before doing the stencil comparison test. 40writemask 41 Stencil test writemask; this controls which bits of the stencil buffer 42 are written. 43fail_op 44 The operation to carry out if the stencil test fails. One of 45 PIPE_STENCIL_OP. 46zfail_op 47 The operation to carry out if the stencil test passes but the depth test 48 fails. One of PIPE_STENCIL_OP. 49zpass_op 50 The operation to carry out if the stencil test and depth test both pass. 51 One of PIPE_STENCIL_OP. 52 53Alpha Members 54------------- 55 56enabled 57 Whether the alpha test is enabled. 58func 59 The alpha test function. One of PIPE_FUNC. 60ref_value 61 Alpha test reference value; used for certain functions. 62