1 /*---------------------------------------------------------------------------*
2 
3   Copyright (C) 2010-2011 Nintendo.  All rights reserved.
4 
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law.  They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10 
11  *---------------------------------------------------------------------------*/
12 
13 // gx2Tessellation.h
14 //
15 // Declares gx2Tessellation-related functions for gx2 library.
16 
17 #ifndef _CAFE_GX2_TESSELLATION_H_
18 #define _CAFE_GX2_TESSELLATION_H_
19 
20 #ifdef __cplusplus
21 extern "C"
22 {
23 #endif // __cplusplus
24 
25 /// @addtogroup GX2TessellationGroup
26 /// @{
27 
28 /// \brief Set tessellation engine controls.
29 ///   This API only needs to be called if the tessellation mode, index fmt, or primitive type
30 ///   changes.  It does not need to be called for every draw call.
31 ///
32 /// \note indexFmt must be set to 32-bit for nonindex drawing and adaptive tessellation mode
33 ///
34 /// \param mode     Tessellation mode
35 /// \param primType Type of primitive to draw
36 /// \param indexFmt Specifies whether indices are 16-bit or 32-bit
37 ///
38 /// \donotcall \gx2_typical \enddonotcall
39 ///
40 /// \writesgpu
41 /// \alwayswritesgpu
42 ///
43 void GX2API GX2SetTessellation(GX2TessellationMode mode,
44                                GX2PrimitiveType primType,
45                                GX2IndexFormat indexFmt);
46 
47 /// \brief Sets the maximum tessellation level for adaptive tessellation and the tessellation level
48 ///        for continuous and discrete tessellation.
49 ///
50 /// For adaptive tessellation mode, minLevel and maxlevel bound the amount
51 /// of tessellation performed.  The actual amount will be between these
52 /// two parameters (inclusive).
53 ///
54 /// For discrete mode, values in the range (1.0, 14.0) are legal.
55 /// For non-discrete modes, values in the range (1.0, 15.0) are legal.
56 /// The minLevel <= maxLevel.
57 ///
58 /// \param maxLevel maximum tessellation level
59 ///
60 /// \donotcall \gx2_typical \enddonotcall
61 ///
62 /// \writesgpu
63 /// \alwayswritesgpu
64 ///
65 void GX2API GX2SetMaxTessellationLevel(f32 maxLevel);
66 
67 /// \brief Sets the minimum tessellation level for adaptive tessellation
68 ///
69 /// This API is not used for continuous and discrete tessellation modes
70 ///
71 /// For adaptive tessellation mode, minLevel and maxlevel bound the amount
72 /// of tessellation performed.  The actual amount will be between these
73 /// two parameters (inclusive).
74 ///
75 /// The min level values in the range (1.0, 15.0) are legal.
76 /// The minLevel <= maxLevel.
77 ///
78 /// \param minLevel minimum tessellation factor
79 ///
80 /// \donotcall \gx2_typical \enddonotcall
81 ///
82 /// \writesgpu
83 /// \alwayswritesgpu
84 ///
85 void GX2API GX2SetMinTessellationLevel(f32 minLevel);
86 
87 /// @}
88 
89 #ifdef __cplusplus
90 }
91 #endif // __cplusplus
92 
93 #endif // _CAFE_GX2_TESSELLATION_H_
94 
95