OROCHI
 
Loading...
Searching...
No Matches
GxDefine.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12#if !defined(GX_EVALUATION)
13#define GX_EVALUATION 0
14#endif //GX_EVALUATION
15
16#if defined(_MASTER)
17#define GX_DEVELOP 0
18#define GX_MASTER 1
19#define GX_ASSERT_ENABLE 0
20#else //_MASTER
21#define GX_DEVELOP 1
22#define GX_MASTER 0
23#define GX_ASSERT_ENABLE 1
24#endif // !_MASTER
25
26// エディターモード
27#if defined(_WINDOWS) && GX_DEVELOP
28#define GX_EDITOR 1
29#else //_WINDOWS && GX_DEVELOP
30#define GX_EDITOR 0
31#endif // !(_WINDOWS && GX_DEVELOP)
32
33// ソースコード内の文字列定数のエンコード
34#define GX_STRING_ENCODE_SJIS 0
35#define GX_STRING_ENCODE_EUC 1
36#define GX_STRING_ENCODE_UTF8 2
37
38// オンラインドキュメント用アドレス
39#define GX_WIKI_ADDRESS "https://d2bamn6912wffr.cloudfront.net/OROCHI/doc/"
40
41// ユニットのプロファイリング
42#ifndef GX_USE_UNIT_PROFILE
43#if GX_DEVELOP
44#define GX_USE_UNIT_PROFILE 1
45#else
46#define GX_USE_UNIT_PROFILE 0
47#endif //GX_DEVELOP
48#endif //GX_USE_UNIT_PROFILE
49
50// 開発用メモリ確保が有効かどうか
51#ifndef GX_DEBUG_NEW
52#if GX_DEVELOP
53#define GX_DEBUG_NEW 1
54#else
55#define GX_DEBUG_NEW 0
56#endif //GX_DEVELOP
57#endif // GX_DEBUG_NEW
58
59// メモリ確保まわり
60#ifndef GX_USE_DEFAULT_ALLOCATOR
61#define GX_USE_DEFAULT_ALLOCATOR 0
62#endif
63
64// GxCore内スレッドのCPU割り当て
65// 非同期ロードスレッドのCPU割り当て
66#ifndef GX_ASYNC_LOAD_THREAD_CPU_INDEX
67#define GX_ASYNC_LOAD_THREAD_CPU_INDEX (-1)
68#endif // GX_ASYNC_LOAD_THREAD_CPU_INDEX
69
70// GxCore内スレッドスタックサイズ
71// ワーカースレッドのスタックサイズ
72#ifndef GX_WORKER_THREAD_STACKSIZE
73#define GX_WORKER_THREAD_STACKSIZE (0xC000) // 48KB
74#endif // GX_WORKER_THREAD_STACKSIZE
75
76// 描画スレッドのスタックサイズ
77#ifndef GX_RENDER_THREAD_STACKSIZE
78#define GX_RENDER_THREAD_STACKSIZE (0xC000) // 48KB
79#endif // GX_RENDER_THREAD_STACKSIZE
80
81// 非同期ロードスレッドのスタックサイズ
82#ifndef GX_ASYNC_LOAD_THREAD_STACKSIZE
83#define GX_ASYNC_LOAD_THREAD_STACKSIZE (0xC000) // 48KB
84#endif // GX_ASYNC_LOAD_THREAD_STACKSIZE
85
86// GxVectorのゼロディバイドワーニング
87#ifndef GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
88#define GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE 0 // 無効
89#endif //GX_VECTOR_ZERO_DIVIDE_WARNING_ENABLE
90
91// 各マップにFP16フォーマットを使用する
92#define GX_USE_FP16MAP
93
94// シェーダーデバッグ有効
95#define GX_SHADER_DEBUG 0
96
97// バウンディングスフィアのサイズを変えずメッシュのスケーリングを変更できる機能
98// note:
99// アプリによるユニットへのスケール処理のタイミングによっては正しく動かない場合があります。
100// その場合はPauseボタンでゲームを止めてから利用ください。
101#define GX_PS_PROFILING 0
102
103//===========================================================================
105//===========================================================================
106#define GX_DIRECTX_VERSION_INVALID 0x1000
107#define GX_DIRECTX_VERSION_9_1 0x9100
108#define GX_DIRECTX_VERSION_9_2 0x9200
109#define GX_DIRECTX_VERSION_9_3 0x9300
110#define GX_DIRECTX_VERSION_10_0 0xa000
111#define GX_DIRECTX_VERSION_10_1 0xa100
112#define GX_DIRECTX_VERSION_11_0 0xb000
113#define GX_DIRECTX_VERSION_11_1 0xb100
114#define GX_DIRECTX_VERSION_12_0 0xc000
115#define GX_DIRECTX_VERSION_12_1 0xc100
116#define GX_DIRECTX_VERSION_12_2 0xc200
117
118#define GX_USE_DX10 (GX_DIRECTX_VERSION_10_0 <= GX_DIRECTX_VERSION && GX_DIRECTX_VERSION < GX_DIRECTX_VERSION_11_0)
119#define GX_USE_DX11 (GX_DIRECTX_VERSION_11_0 <= GX_DIRECTX_VERSION && GX_DIRECTX_VERSION < GX_DIRECTX_VERSION_12_0)
120#define GX_USE_DX12 (GX_DIRECTX_VERSION_12_0 <= GX_DIRECTX_VERSION)
121
122//===========================================================================
124//===========================================================================
125#define GX_OPENGL_VERSION_INVALID 0
126#define GX_OPENGL_VERSION_4_0 40
127#define GX_OPENGL_VERSION_4_1 41
128#define GX_OPENGL_VERSION_4_2 42
129#define GX_OPENGL_VERSION_4_3 43
130#define GX_OPENGL_VERSION_4_4 44
131#define GX_OPENGL_VERSION_4_5 45
132#define GX_OPENGL_VERSION_4_6 46
133
134//===========================================================================
136//===========================================================================
137#define GX_SHADER_MODEL_1 10
138#define GX_SHADER_MODEL_2 20
139#define GX_SHADER_MODEL_3 30
140#define GX_SHADER_MODEL_4 40
141#define GX_SHADER_MODEL_5 50
142#define GX_SHADER_MODEL_6 60
143
144#if defined(_PS4)
145#include "PS4/GxDefinePS4.h"
146#elif defined(_WINDOWS)
147#include "GxDefineWindows.h"
148#elif defined(_NX64)
149#include "NX64/GxDefineNX64.h"
150#elif defined(_PS5)
151#include "PS5/GxDefinePS5.h"
152#elif defined(_XBOX_XS)
153#include "XBOX_XS/GxDefineXboxXS.h"
154#endif //_XBOX_XS
155
156GX_CORE_NAMESPACE_BEGIN()
157//===========================================================================
159//===========================================================================
161struct b32_
162{
163public:
165 constexpr b32_(void) : _boolean(0) {}
167 constexpr b32_(u32 boolean) : _boolean(boolean) {}
169};
170
172struct b32 : public b32_
173{
174public:
176 constexpr b32(void) : b32_() {}
178 ~b32(void) {}
180 constexpr b32(bool boolean) : b32_(static_cast<u32>(boolean)) {}
182 constexpr b32(const b32_& boolean) : b32_(boolean._boolean) {}
184 constexpr operator bool(void) const { return _boolean ? true : false; }
186 constexpr const b32& operator &=(const b32& boolean) { _boolean &= boolean._boolean; return *this; }
187};
188
189//===========================================================================
191//===========================================================================
194{
195public:
196 GX_CSTR _name;
197 s32 _index;
198};
199
200#if GX_DEVELOP
203{
204public:
205 GX_CSTR _name;
206 u32 _flag;
207};
208#endif //GX_DEVELOP
209
210//===========================================================================
212//===========================================================================
213using GxTypedObject = void;
214using GX_HANDLE = u32;
215
216//===========================================================================
218//===========================================================================
219enum class GX_ENDIAN
220{
221 BIG = 0,
222 LITTLE,
223
224#if GX_BIG_ENDIAN
225 NATIVE = BIG
226#else // GX_BIG_ENDIAN
227 NATIVE = LITTLE
228#endif // !GX_BIG_ENDIAN
229};
230
231#if defined(_WINDOWS) && GX_DEVELOP
233static constexpr GX_ENDIAN getEndian(GX_PLATFORM /*platform*/)
234{
235 return GX_ENDIAN::LITTLE;
236}
237#endif //_WINDOWS && GX_DEVELOP
238
239//===========================================================================
240// 出力 (共通設定)
241//===========================================================================
243enum class OUTPUT_TYPE
244{
245 ASSERT,
246 WARNING,
247 TRACE,
248 MAX,
249};
250
252enum class GX_LIBRARY
253{
254 CORE = 0,
255 CHARACTER,
256 MOTION,
257 PHYSICS,
258 UTILITY,
259 SHADER,
260 FILTER,
261 EFFECT,
262 SOUND,
263 NETWORK,
264 P2P,
265 MOVIE,
266 HUD,
267 MAX,
268};
269
270#if GX_ASSERT_ENABLE
271static GX_CSTR GX_TRACE_CATEGORY_TEXT[static_cast<u32>(GX_LIBRARY::MAX) + 2] = {
272 "Core",
273 "Character",
274 "Motion",
275 "Physics",
276 "Utility",
277 "Shader",
278 "Filter",
279 "Effect",
280 "Sound",
281 "Network",
282 "P2P",
283 "Movie",
284 "Hud",
285 "Warning",
286 "Error",
287};
288
289// TRACEの出力制限用定義
290#define GX_TRACE_CATEGORY_NONE 0
291#define GX_TRACE_CATEGORY_CORE (1 << static_cast<u32>(GX_LIBRARY::CORE))
292#define GX_TRACE_CATEGORY_CHARACTER (1 << static_cast<u32>(GX_LIBRARY::CHARACTER))
293#define GX_TRACE_CATEGORY_MOTION (1 << static_cast<u32>(GX_LIBRARY::MOTION))
294#define GX_TRACE_CATEGORY_PHYSICS (1 << static_cast<u32>(GX_LIBRARY::PHYSICS))
295#define GX_TRACE_CATEGORY_UTILITY (1 << static_cast<u32>(GX_LIBRARY::UTILITY))
296#define GX_TRACE_CATEGORY_SHADER (1 << static_cast<u32>(GX_LIBRARY::SHADER))
297#define GX_TRACE_CATEGORY_FILTER (1 << static_cast<u32>(GX_LIBRARY::FILTER))
298#define GX_TRACE_CATEGORY_EFFECT (1 << static_cast<u32>(GX_LIBRARY::EFFECT))
299#define GX_TRACE_CATEGORY_SOUND (1 << static_cast<u32>(GX_LIBRARY::SOUND))
300#define GX_TRACE_CATEGORY_NETWORK (1 << static_cast<u32>(GX_LIBRARY::NETWORK))
301#define GX_TRACE_CATEGORY_P2P (1 << static_cast<u32>(GX_LIBRARY::P2P))
302#define GX_TRACE_CATEGORY_MOVIE (1 << static_cast<u32>(GX_LIBRARY::MOVIE))
303#define GX_TRACE_CATEGORY_HUD (1 << static_cast<u32>(GX_LIBRARY::HUD))
304#define GX_TRACE_CATEGORY_WARNING (1 << static_cast<u32>(GX_LIBRARY::MAX))
305#define GX_TRACE_CATEGORY_ERROR (GX_TRACE_CATEGORY_WARNING << 1)
306#define GX_TRACE_CATEGORY_MAX GX_TRACE_CATEGORY_ERROR
307#define GX_TRACE_CATEGORY_ALL 0xFFFFFFFF
308
310#define GX_REPORT_LENGTH_MAX 256
312extern void report(u32 category, OUTPUT_TYPE type, GX_CSTR /*file*/, s32 /*line*/, GX_CSTR /*func*/, GX_CSTR format, ...);
314extern void critical_error_exit(void);
315#endif //GX_ASSERT_ENABLE
316
317GX_CORE_NAMESPACE_END()
318
319#if GX_ASSERT_ENABLE
320#define GX_ASSERT(__EXPRESSION__, ...) (void)((!!(__EXPRESSION__)) || (gx::core::report(GX_TRACE_CATEGORY_ERROR, gx::core::OUTPUT_TYPE::ASSERT, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__), 0))
321#define GX_ERROR(__EXPRESSION__, ...) (void)((!!(__EXPRESSION__)) || (gx::core::report(GX_TRACE_CATEGORY_ERROR, gx::core::OUTPUT_TYPE::WARNING, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__), 0))
322#define GX_WARNING(__EXPRESSION__, ...) (void)((!!(__EXPRESSION__)) || (gx::core::report(GX_TRACE_CATEGORY_WARNING, gx::core::OUTPUT_TYPE::WARNING, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__), 0))
323#define GX_TRACE(__CATEGORY__, ...) gx::core::report(__CATEGORY__, gx::core::OUTPUT_TYPE::TRACE, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)
324#define GX_CRITICAL_EXIT() gx::core::critical_error_exit()
325#else //GX_ASSERT_ENABLE
326#define GX_ASSERT(__EXPRESSION__, ...) ((void)0)
327#define GX_ERROR(__EXPRESSION__, ...) ((void)0)
328#define GX_WARNING(__EXPRESSION__, ...) ((void)0)
329#define GX_TRACE(...) ((void)0)
330#define GX_CRITICAL_EXIT() ((void)0)
331#endif // !GX_ASSERT_ENABLE
332
333#define GX_USE_DIRECTX (GX_DIRECTX_VERSION != GX_DIRECTX_VERSION_INVALID)
334#define GX_USE_OPENGL (GX_OPENGL_VERSION != GX_OPENGL_VERSION_INVALID)
335#define GX_USE_HLSL (!GX_USE_OPENGL)
336
337#if GX_USE_DIRECTX
338#if GX_DEVELOP
339#define GX_DIRECTX_ASSERT(__RESULT__, __FUNCTION__) GX_ASSERT(SUCCEEDED(__RESULT__), "%s() error:0x%08X", __FUNCTION__, static_cast<u32>(__RESULT__))
340#else //GX_DEVELOP
341#define GX_DIRECTX_ASSERT(__RESULT__, __FUNCTION__) GX_UNUSED(__RESULT__)
342#endif // !GX_DEVELOP
343#endif //GX_USE_DIRECTX
344
345#if GX_DEVELOP
346// Masterビルドの場合は引数を無効にして空文字列を返す
347#define GX_DEVELOP_FUNC_STR(__MY_STR__) (__MY_STR__)
348#else //GX_DEVELOP
349#define GX_DEVELOP_FUNC_STR(__MY_STR__) ("")
350#endif // !GX_DEVELOP
351
352#if GX_SHADER_MODEL >= GX_SHADER_MODEL_5
353#define GX_ENABLE_TESSELLATION 1
354#define GX_ENABLE_COMPUTE_SHADER 1
355#else // GX_SHADER_MODEL >= GX_SHADER_MODEL_5
356#define GX_ENABLE_TESSELLATION 0
357#define GX_ENABLE_COMPUTE_SHADER 0
358#endif // GX_SHADER_MODEL < GX_SHADER_MODEL_5
359
360#if defined(_PS4) || defined(_NX64) || defined(_PS5)
361#define ENABLE_SHADER_COMPILE 1
362#define ENABLE_PARARELL_SHADER_COMPILE 1
363#else //_PS4 || _NX64 || _PS5
364#define ENABLE_SHADER_COMPILE 0
365#define ENABLE_PARARELL_SHADER_COMPILE 0
366#endif // !(_PS4 || _NX64 || _PS5)
367
368// Neoを有効にするか
369#if defined(_PS4)
370#define GX_ENABLE_NEO 1
371#else //_PS4
372#define GX_ENABLE_NEO 0
373#endif // !_PS4
374
375// ステンシルマスク処理を有効
376#if defined(_PS4)
377#define GX_ENABLE_HTILE_STENCIL_MASK 1
378#else //_PS4
379#define GX_ENABLE_HTILE_STENCIL_MASK 0
380#endif // !_PS4
381
382// オクルージョンカリング有効
383#if GX_USE_DX12 || defined(_PS4) || defined(_PS5)
384#define GX_ENABLE_OCCLUSION_CULLING 1
385#else //GX_USE_DX12 || _PS4 || _PS5
386#define GX_ENABLE_OCCLUSION_CULLING 0
387#endif // !(GX_USE_DX12 || _PS4 || _PS5)
GX_ENDIAN
エンディアン定義
Definition GxDefine.h:220
@ LITTLE
リトルエンディアン
@ BIG
ビッグエンディアン
@ NATIVE
ネイティブエンディアン
void critical_error_exit(void)
強制終了
Definition GxDefine.cpp:374
OUTPUT_TYPE
出力形式
Definition GxDefine.h:244
@ WARNING
継続できるアサート
@ ASSERT
アサート
@ MAX
定義数
@ TRACE
デバッグ出力
GX_LIBRARY
GXライブラリの定義
Definition GxDefine.h:253
@ UTILITY
ユーティリティ
@ NETWORK
ネットワーク
@ MAX
定義数
@ CHARACTER
キャラクタ
@ EFFECT
エフェクト
@ PHYSICS
物理
@ SHADER
シェーダー
@ CORE
コア
@ MOVIE
ムービー
@ FILTER
フィルター
@ SOUND
サウンド
@ MOTION
モーション
void GxTypedObject
その他
Definition GxDefine.h:213
void report(u32 category, OUTPUT_TYPE type, GX_CSTR, s32, GX_CSTR, GX_CSTR format,...)
レポート出力
Definition GxDefine.cpp:297
u32 GX_HANDLE
ハンドル
Definition GxDefine.h:214
GUI用
Definition GxDefine.h:194
GX_CSTR _name
名前
Definition GxDefine.h:196
s32 _index
インデックス値
Definition GxDefine.h:197
GUI用フラグ型
Definition GxDefine.h:203
u32 _flag
フラグ値
Definition GxDefine.h:206
GX_CSTR _name
名前
Definition GxDefine.h:205
32bitブーリアン型
Definition GxDefine.h:162
constexpr b32_(u32 boolean)
コンストラクタ
Definition GxDefine.h:167
u32 _boolean
真偽値
Definition GxDefine.h:168
constexpr b32_(void)
デフォルトコンストラクタ
Definition GxDefine.h:165
32bitブーリアン
Definition GxDefine.h:173
constexpr b32(void)
デフォルトコンストラクタ
Definition GxDefine.h:176
constexpr b32(const b32_ &boolean)
コピーコンストラクタ
Definition GxDefine.h:182
constexpr const b32 & operator&=(const b32 &boolean)
演算子
Definition GxDefine.h:186
constexpr b32(bool boolean)
コピーコンストラクタ
Definition GxDefine.h:180
~b32(void)
デストラクタ
Definition GxDefine.h:178