OROCHI
 
Loading...
Searching...
No Matches
GxSysEnvironment.h
Go to the documentation of this file.
1//===========================================================================
11//===========================================================================
12#pragma once
13
14#define USE_GXSYSGPGPU 0
15
16GX_CORE_NAMESPACE_BEGIN()
17
18//===========================================================================
20//===========================================================================
22{
23 //-----------------------------------------------------------
25 //-----------------------------------------------------------
27public:
30private:
32 static constexpr s32 N = 624;
34 static constexpr s32 M = 397;
36 static constexpr u32 MATRIX_A = 0x9908b0dfU;
38 static constexpr u32 UPPER_MASK = 0x80000000U; // most significant w-r bits //
40 static constexpr u32 LOWER_MASK = 0x7fffffffU; // least significant r bits //
41
43 //-----------------------------------------------------------
45 //-----------------------------------------------------------
47public:
49 GxRandomMT19937(void);
51 GxRandomMT19937(u32 seed);
53 ~GxRandomMT19937(void) override {}
54
56 void initialize(u32 seed) override;
57
59 //-----------------------------------------------------------
61 //-----------------------------------------------------------
63
65 u32 getRandomU32(void) override;
66
68 //-----------------------------------------------------------
70 //-----------------------------------------------------------
72private:
74 void updateTable(void);
75
77 //-----------------------------------------------------------
79 //-----------------------------------------------------------
81private:
82 u32 mt[N];
83 s32 mti;
84
86};
87
90{
91 //-----------------------------------------------------------
93 //-----------------------------------------------------------
95public:
102
104 //-----------------------------------------------------------
106 //-----------------------------------------------------------
108
110 static void createMipmap( GxRenderTexture* pTexture );
112 static s32 getMaterialFunctionIndex( GxResShaderPackage* pShaderPackage, GX_HANDLE handleMaterialFunctions, const GxString& materialFunctionName );
114 static void setMaterialFunctions( GxResShaderPackage* pShaderPackage, GxShaderPackage::GxShaderCode* pShaderCode, const GxString& materialName, const GxString& materialFunctionName );
116 static b32 setShaders( GxResShaderPackage* pShaderPackage, GxShaderPackage::GxShaderCode* pShaderCode );
122 static GxRenderVertexBuffer* createVertexBufferSphere( s32 xdiv, s32 ydiv, s32 ycount );
125
127 static GxVector4 getFogParam( f32 startDistance, f32 endDistance, f32 min, f32 max );
128
130};
131
158
161{
162 //-------------------------------------------------------------
164 //-------------------------------------------------------------
166public:
168 RenderMode(void);
170 ~RenderMode(void) override {}
171
173 void initialize(void);
174
176 //-------------------------------------------------------------
178 //-------------------------------------------------------------
180
182 void setRenderMode( u32 mode );
183
185 //-------------------------------------------------------------
187 //-------------------------------------------------------------
189private:
190 u32 _currentMode;
191
193};
194
197{
198 //-------------------------------------------------------------
200 //-------------------------------------------------------------
202public:
203 GX_RTTI_STRUCT(PerlinNoiseParam)
204
205
206 //-------------------------------------------------------------
208 //-------------------------------------------------------------
210
213 _seed(0), _startOctave(0), _endOctave(0), _amplitude(0.f), _persistence(0.f), _base(0.f) {}
215 PerlinNoiseParam( s8 startOctave, s8 endOctave, f32 amplitude, f32 persistence, f32 base, u16 seed ) :
216 _seed(seed), _startOctave(startOctave), _endOctave(endOctave), _amplitude(amplitude), _persistence(persistence), _base(base) {}
217
219 //-------------------------------------------------------------
221 //-------------------------------------------------------------
223
225 void clamp(void);
226
228 //-------------------------------------------------------------
230 //-------------------------------------------------------------
232public:
233 u16 _seed;
238 f32 _base;
239
241};
242
243//===========================================================================
245//===========================================================================
246class GxSysGpgpu : public GxSysBase, public SingletonBase<GxSysGpgpu>
247{
248 //-------------------------------------------------------------
250 //-------------------------------------------------------------
252public:
253 GX_RTTI_ABSTRACT_CLASS(GxSysGpgpu, GxSysBase)
254 // ClassBase継承クラス用禁止宣言
256
257
258 class BlockDraw : public GxClassBase
259 {
260 //-------------------------------------------------------------
262 //-------------------------------------------------------------
264 public:
265 GX_RTTI_CLASS(BlockDraw, GxClassBase)
266
267
268 //-------------------------------------------------------------
270 //-------------------------------------------------------------
272
274 BlockDraw(void) : _isDrawFinished(true) {}
276 ~BlockDraw(void) override { blockDrawFinished(); }
277
279 //-------------------------------------------------------------
281 //-------------------------------------------------------------
283
285 GX_FORCE_INLINE void setCallback(void)
286 {
287 _isDrawFinished = false;
288 getGxRenderContext()->setCallback(GX_CALLBACK_HANDLER_CLASS(GxSysGpgpu::BlockDraw, this, callbackDrawFinished), this, &_isDrawFinished);
289 }
291 GX_FORCE_INLINE void blockDrawFinished(void) const
292 {
293 while (!isDrawFinished()); // 描画終了を待つ //
294 }
295 private:
297 s32 callbackDrawFinished(void* pSource, void* pArgument);
298
300 //-------------------------------------------------------------
302 //-------------------------------------------------------------
304 public:
306 GX_FORCE_INLINE b32 isDrawFinished(void) const { return _isDrawFinished; }
307
309 //-------------------------------------------------------------
311 //-------------------------------------------------------------
313 private:
314 b32 _isDrawFinished;
315
317 };
318
320 //-------------------------------------------------------------
322 //-------------------------------------------------------------
324
326 GxSysGpgpu(void);
328 ~GxSysGpgpu(void) override {}
329
331 //-------------------------------------------------------------
333 //-------------------------------------------------------------
335public:
337 void startUsing(void);
339 void endUsing(void);
341 b32 beginCompute( GxRenderTexture* pTarget, const GxString& computeName );
343 void endCompute(void);
344
345 // Computeメソッド //
347 void computePerlinNoise( s32 startOctave, s32 endOctave, f32 amplitude, f32 persistence, f32 base, const GxVector2* pOrigin );
349 void computePerlinNoise( s32 startOctave, s32 endOctave, f32 amplitude, f32 persistence, f32 base, u16 seed );
351 void computePerlinNoise( const PerlinNoiseParam& param );
353 void computeNormalAndHeight( GxRenderTexture* pHeightTexture, f32 normalScale );
354
355private:
357 void createRandomTexture(void);
358
360 //-----------------------------------------------------------
362 //-----------------------------------------------------------
364public:
366 constexpr GxRenderTexture* getRandomTexture( s32 index ) const { return (index == 0) ? _pTextureRandom0 : _pTextureRandom1; }
367
369 //-------------------------------------------------------------
371 //-------------------------------------------------------------
373private:
374 s32 _referenceCount;
375
376 GxRenderVertexDeclaration* _pVertexDeclarationCompute;
377 GxRenderVertexBuffer* _pVertexBufferCompute;
378 GxResShaderPackage* _pShaderPackageCompute;
379#if USE_GXSYSGPGPU
380 GxShaderPackage::GxShaderCode* _pShaderCodeCompute;
381#endif //USE_GXSYSGPGPU
382 GxRenderTexture* _pTextureRandom0;
383 GxRenderTexture* _pTextureRandom1;
384 GX_HANDLE _handleRandomSampler0;
385 GX_HANDLE _handleRandomSampler1;
386 GX_HANDLE _handleBase;
387 GX_HANDLE _handleRandomOrigin;
388 GX_HANDLE _handleHeightSampler;
389 GX_HANDLE _handleNormalScale;
390#if USE_GXSYSGPGPU
391 RENDER_VIEW _oldView;
392#endif //USE_GXSYSGPGPU
393
395};
396
397// アクセスインターフェース
398GX_FORCE_INLINE GxSysGpgpu* getGxGpgpu(void){ return GxSysGpgpu::getSingletonPointer(); }
399
400//===========================================================================
402//===========================================================================
404enum class WEEKDAY
405{
406 SUN,
407 MON,
408 TUE,
409 WED,
410 THU,
411 FRI,
412 SAT,
413 MAX,
414};
415
418{
419 //-------------------------------------------------------------
421 //-------------------------------------------------------------
423public:
424 GX_RTTI_ABSTRACT_CLASS(GxDateBase, GxClassBase)
425
426
427 //-------------------------------------------------------------
429 //-------------------------------------------------------------
431
433 GxDateBase(void);
435 GxDateBase( s32 year, s32 month, s32 day );
437 GxDateBase( s32 julianDay );
438
440 //-------------------------------------------------------------
442 //-------------------------------------------------------------
444
446 constexpr s32 getYear(void) const { return _year; }
448 constexpr void setYear( s32 year ) { _year = static_cast<s16>(year); }
449
451 constexpr s32 getMonth(void) const { return _month; }
453 constexpr void setMonth( s32 month ) { _month = static_cast<s8>(month); }
454
456 constexpr s32 getDay(void) const { return _day; }
458 constexpr void setDay( s32 day ) { _day = static_cast<s8>(day); }
459
461 virtual s32 getJulianDay(void) const = 0;
463 GxString getDateString(void) const;
465 WEEKDAY getWeekday(void) const;
466
469 static f64 GetGreenwichSiderealTime( f64 Tu );
470
471protected:
473 static s32 getMonth(s32 julianDay);
475 static s32 getDate(s32 julianDay, s32 month);
476
478 //-------------------------------------------------------------
480 //-------------------------------------------------------------
482public:
484 static constexpr s32 divedeFloor(s32 a, s32 b) { return((a > 0) ? a / b : (a - b + 1) / b); }
485#if GX_DEVELOP
487 static void test(void);
488#endif //GX_DEVELOP
489
491 //-------------------------------------------------------------
493 //-------------------------------------------------------------
495public:
496 static s16 _totalDays[12];
497
498protected:
499 s16 _year;
501 s8 _day;
502
504};
505
508class GxDate : public GxDateBase
509{
510 //-------------------------------------------------------------
512 //-------------------------------------------------------------
514public:
515 GX_RTTI_CLASS(GxDate, GxDateBase)
516
517
518 //-------------------------------------------------------------
520 //-------------------------------------------------------------
522
524 GxDate(void) : GxDateBase() {}
526 GxDate( s32 year, s32 month, s32 day ) : GxDateBase( year, month, day ) {}
528 GxDate( s32 julianDay );
529
531 //-------------------------------------------------------------
533 //-------------------------------------------------------------
535
537 s32 getJulianDay(void) const override;
538
540};
541
544{
545 //-------------------------------------------------------------
547 //-------------------------------------------------------------
549public:
550 GX_RTTI_CLASS(GxJulianDate, GxClassBase)
551
552
553 //-------------------------------------------------------------
555 //-------------------------------------------------------------
557
561 GxJulianDate( s32 year, s32 month, s32 day ) : GxDateBase( year, month, day ) {}
563 GxJulianDate( s32 julianDay );
564
566 //-------------------------------------------------------------
568 //-------------------------------------------------------------
570
572 s32 getJulianDay(void) const override;
573private:
575 static s32 getJuliCalY( s32 j );
577 static s32 getJuliCalJD( s32 j );
578
580};
581
584{
585 //-------------------------------------------------------------
587 //-------------------------------------------------------------
589public:
591 static GxVector3 calcOrbitalPosition( f64 a, f64 e, f64 M0, f64 n, f64 epoch, f64 t );
592private:
594 static GxVector3 calcEllipticalOrbit( f64 a, f64 e, f64 M );
596 static GxVector3 calcHyperbolicOrbit( f64 a, f64 e, f64 M );
597
599};
600
601// 定数定義
602#define GX_K_GAUSS 0.01720209895
603#define GX_SPEED_OF_LIGHT 299792458.0
604
605#define GX_1AU_SEC 499.0047838061
606#define GX_G_GRAV 6.672e-11
607#define GX_R_ME 0.01230002
608
609#define GX_J2000 2451545.0
610#define GX_EPSJ2000 (84381.448/(60*60))
611
612#define GX_1AU_METER (GX_SPEED_OF_LIGHT * GX_1AU_SEC)
613#define GX_1LY_METER (GX_SPEED_OF_LIGHT * 365.25*24*60*60)
614#define GX_1PC_METER (GX_1AU_METER / 4.8481369958608411e-6)
615
617#define GX_1AU_KM (GX_1AU_METER / GxMath::KILO_VALUE)
618#define GX_1KM_AU (1.0 / GX_1AU_KM)
619#define GX_1LY_KM (GX_1LY_METER / GxMath::KILO_VALUE)
620#define GX_1KM_LY (1.0 / GX_1LY_KM)
621#define GX_1PC_KM (GX_1PC_METER / GxMath::KILO_VALUE)
622#define GX_1KM_PC (1.0 / GX_1PC_KM)
623
624#define GX_1AU_PC GX_1AU_METER/GX_1PC_METER
625#define GX_1PC_AU GX_1PC_METER/GX_1AU_METER
626#define GX_1PC_LY GX_1PC_METER/GX_1LY_METER
627#define GX_1LY_PC GX_1LY_METER/GX_1PC_METER
628
629// original : orbital_elements "mtk_orbital_element.h"
632{
633 //-------------------------------------------------------------
635 //-------------------------------------------------------------
637public:
639 void initialize( f64 epoch, f64 a, f64 e, f64 M0, f64 node, f64 i, f64 omg );
640
642 //-------------------------------------------------------------
644 //-------------------------------------------------------------
646
648 void update( f64 t );
649
651 //-------------------------------------------------------------
653 //-------------------------------------------------------------
655
657 constexpr f64 getEpoch(void) const { return _epoch; }
659 constexpr f64 getA(void) const { return _a; }
661 constexpr f64 getE(void) const { return _e; }
663 constexpr f64 getM0(void) const { return _M0; }
665 constexpr f64 getN(void) const { return _n; }
667 GX_FORCE_INLINE GxMatrixAffine getTransformMatrix(void) const { return _transformMatrix; }
669 GX_FORCE_INLINE GxVector3 getPosition(void) const { return _position; }
670
672 GxVector3 calcOrbitalPosition( f64 phi ) const;
674 static GxVector3 calcOrbitalPosition( f64 a, f64 e, f64 phi );
675
677 //-------------------------------------------------------------
679 //-------------------------------------------------------------
681private:
682 f64 _epoch;
683 f64 _a;
684 f64 _e;
685 f64 _M0;
686 f64 _n;
687 GxMatrixAffine _transformMatrix;
688
689 GxVector3 _position;
690
692};
693
695enum class GX_PLANET
696{
697 MERCURY,
698 VENUS,
699 EARTH,
700 MARS,
701 JUPITER,
702 SATURN,
703 URANUS,
704 NEPTUNE,
705 PLUTO,
706 MAX,
707};
708
711{
712 //-------------------------------------------------------------
714 //-------------------------------------------------------------
716public:
717 // original : planet_orbital_elements "mtk_planet_position.cpp"
720 {
721 f64 _epoch;
722 f64 _a;
723 f64 _e;
724 f64 _T;
725 f64 _i;
726 f64 _node;
728 f64 _L;
729 f64 _Re;
730 };
732 static const PlanetOribtalElements planetOribtalElements[static_cast<s32>(GX_PLANET::MAX)];
733
735 //-------------------------------------------------------------
737 //-------------------------------------------------------------
739
741 static constexpr f64 getPlanetRadius( GX_PLANET planet ) { return planetOribtalElements[ static_cast<u32>(planet) ]._Re * GX_1KM_PC; }
743 static constexpr f64 getMoonRadius(void) { return 1738 * GX_1KM_PC; }
745 static constexpr f64 getSunRadius(void) { return 696000 * GX_1KM_PC; }
746
748};
749
752{
753 //-------------------------------------------------------------
755 //-------------------------------------------------------------
757
758 struct GxVector3f64
759 {
760 //-------------------------------------------------------------
762 //-------------------------------------------------------------
764
766 GxVector3f64( f64 x, f64 y, f64 z ) { _x = x; _y = y; _z = z; }
768 GxVector3f64( const GxVector3& v ) { _x = v._x; _y = v._y; _z = v._z; }
770 operator GxVector3(void) const { return GxVector3( static_cast<f32>(_x), static_cast<f32>(_y), static_cast<f32>(_z) ); }
771
773 //-------------------------------------------------------------
775 //-------------------------------------------------------------
777
779 static GxVector3f64 getCross(const GxVector3f64& vector0, const GxVector3f64& vector1);
781 GxVector3f64 getNormalize(void) const;
783 GxVector3f64 getTransformNormal( const GxMatrixAffine& matrix );
784
786 //-------------------------------------------------------------
788 //-------------------------------------------------------------
790
791 f64 _x;
792 f64 _y;
793 f64 _z;
794
796 };
797
799 //-------------------------------------------------------------
801 //-------------------------------------------------------------
803public:
805 void initialize(void);
806
808 //-------------------------------------------------------------
810 //-------------------------------------------------------------
812
814 void update( f64 at, f64 longitude, f64 latitude );
815
817 //-------------------------------------------------------------
819 //-------------------------------------------------------------
821
823 GX_FORCE_INLINE const GxVector3& getPlanetPositionEC( GX_PLANET planet ) const { return _planetPositionsEC[static_cast<u32>(planet)]; }
825 GX_FORCE_INLINE const GxVector3& getPlanetPositionHC( GX_PLANET planet ) const { return _planetPositionsHC[static_cast<u32>(planet)]; }
827 constexpr f64 getPlanetRadius( GX_PLANET planet ) const { return GxPlanetData::getPlanetRadius( planet ); }
829 GX_FORCE_INLINE const GxVector3& getMoonPositionEC(void) const { return _moonPositionEC; }
831 GX_FORCE_INLINE const GxVector3& getMoonPositionHC(void) const { return _moonPositionHC; }
833 GX_FORCE_INLINE const GxMatrixAffine& getMoonOrientation(void) const { return _moonEcToSatMatrix; }
835 constexpr f64 getMoonRadius(void) const { return GxPlanetData::getMoonRadius(); }
837 GX_FORCE_INLINE const GxVector3& getSunPositionHC(void) const { return _sunPositionHC; }
839 constexpr f64 getSunRadius(void) const { return GxPlanetData::getSunRadius(); }
840
842 GX_FORCE_INLINE const GxMatrixAffine& getPlanetMatrixECtoPL(void) const { return _planetMatrixECtoPL; }
843
845 GX_FORCE_INLINE const OrbitalElements& getPlanetOrbitalElements( GX_PLANET planet ) const { return _planetsOrbitalElements[static_cast<u32>(planet)]; }
846
848 constexpr GX_CSTR getPlanetNameJapan( GX_PLANET planet ) const { return _planetNameJapan[2 + static_cast<s32>(planet)]; }
850 constexpr GX_CSTR getPlanetNameEnglish( GX_PLANET planet ) const { return _planetNameEnglish[2 + static_cast<s32>(planet)]; }
852 GX_FORCE_INLINE GX_CSTR getSunNameJapan(void) const { return _planetNameJapan[0]; }
854 GX_FORCE_INLINE GX_CSTR getSunNameEnglish(void) const { return _planetNameEnglish[0]; }
856 GX_FORCE_INLINE GX_CSTR getMoonNameJapan(void) const { return _planetNameJapan[1]; }
858 GX_FORCE_INLINE GX_CSTR getMoonNameEnglish(void) const { return _planetNameEnglish[1]; }
859
861 static GxVector3 transformPosition( f32 alpha, f32 delta );
862private:
864 static GxVector3 calcMoonPosition(f64 t);
866 static void calcMoonOrientation(f64 at, f64& alpha, f64& delta, f64& W);
870 static GxMatrixAffine getMoonMatrixECtoSAT(f64 at);
872 static GxVector3f64 getPlanetNormalVectorPL(f64 longitude, f64 latitude);
874 static GxVector3f64 getPlanetNormalVectorEC(const GxMatrixAffine& planetMatrixECtoPL, f64 longitude, f64 latitude);
875
877 //-------------------------------------------------------------
879 //-------------------------------------------------------------
881private:
883 f64 _t;
884 f64 _at;
885 f64 _longitude;
886 f64 _latitude;
887
888 OrbitalElements _planetsOrbitalElements[static_cast<s32>(GX_PLANET::MAX)];
889
890 GxVector3 _planetPositionsEC[static_cast<s32>(GX_PLANET::MAX)];
891 GxVector3 _planetPositionsHC[static_cast<s32>(GX_PLANET::MAX)];
892
893 GxVector3 _moonPositionEC;
894 GxVector3 _moonPositionHC;
895
896 GxMatrixAffine _moonEcToSatMatrix;
897
898 GxVector3 _sunPositionHC;
899
900 GxMatrixAffine _planetMatrixECtoPL;
901
902 static GX_CSTR _planetNameJapan[];
903 static GX_CSTR _planetNameEnglish[];
904};
905
906//===========================================================================
908//===========================================================================
909class GxSysEnvironment : public GxSysBase, public SingletonBase<GxSysEnvironment>
910{
911 //-------------------------------------------------------------
913 //-------------------------------------------------------------
915public:
916 GX_RTTI_ABSTRACT_CLASS(GxSysEnvironment, GxSysBase)
917 // ClassBase継承クラス用禁止宣言
919
920
921 //-------------------------------------------------------------
923 //-------------------------------------------------------------
925
927 GxSysEnvironment(void);
929 ~GxSysEnvironment(void) override {}
930
932 //-------------------------------------------------------------
934 //-------------------------------------------------------------
936public:
938 void update(void) override;
939private:
941 f32 calcSiderealTime(void) const;
942
944 //-----------------------------------------------------------
946 //-----------------------------------------------------------
948public:
950 constexpr f32 getLatitude(void) const { return _latitude; }
952 GX_FORCE_INLINE void setLatitude(f32 latitude) { _latitude = GxMath::getClamp( latitude, -89.9999f, 89.9999f ); }
953
955 constexpr f32 getLongitude(void) const { return _longitude; }
957 constexpr void setLongitude(f32 longitude) { _longitude = longitude; }
958
960 constexpr f32 getAltitude(void) const { return _altitude; }
962 constexpr void setAltitude(f32 altitude) { _altitude = altitude; }
963
965 constexpr f32 getObliquity(void) const { return _obliquity; }
967 constexpr void setObliquity(f32 obliquity) { _obliquity = obliquity; }
968
970 const GxDate& getDate(void) const { return _date; }
972 GX_FORCE_INLINE void setDate( const GxDate& date ) { _date = date; _julianDay = date.getJulianDay(); }
974 GX_FORCE_INLINE void setJulianDay( s32 julianDay ) { _julianDay = julianDay; _date = GxDate( julianDay ); }
975
977 constexpr f32 getDifferentTime(void) const { return _differentTime; }
979 constexpr void setDifferentTime(f32 time) { _differentTime = time; }
980
982 constexpr f32 getSiderealTime(void) const { return _siderealTime; }
983
985 constexpr f64 getRotationTime(void) const { return _rotationTime; }
987 constexpr void setRotationTime(f64 time) { _rotationTime = time; }
989 constexpr void setRotationTime( s32 hour, s32 minute, f64 second ) { _rotationTime = (hour*3600 + minute*60 + second)/(24*3600.0); }
991 constexpr f64 getRotationSpeed(void) const { return _rotationSpeed; }
993 constexpr f64 getRotationSpeedScale(void) const { return _rotationSpeedScale; }
995 constexpr void setRotationSpeed(f64 speed) { _rotationSpeed = speed; _rotationSpeedScale = _rotationSpeed * (24.0*60*60*60); }
997 constexpr void setRotationSpeedScale(f64 speedScale) { _rotationSpeed = speedScale/(24.0*60*60*60); _rotationSpeedScale = speedScale; }
998
1000 constexpr f32 getCloudyFactor(void) const { return _cloudyFactor; }
1002 constexpr void setCloudyFactor(f32 factor) { _cloudyFactor = factor; }
1004 constexpr f32 getStormyFactor(void) const { return _stormyFactor; }
1006 constexpr void setStormyFactor(f32 factor) { _stormyFactor = factor; }
1008 constexpr f32 getBlizzardFactor(void) const { return _blizzardFactor; }
1010 constexpr void setBlizzardFactor(f32 factor) { _blizzardFactor = factor; }
1012 const GxVector3& getWindVector(void) const { return _windVector; }
1014 GX_FORCE_INLINE void setWindVector(const GxVector3& vector) { _windVector = vector; }
1016 GX_FORCE_INLINE GxSolarSystem& getSolarSystem(void) { return _solarSystem; }
1017
1019 GX_FORCE_INLINE const GxVector4& getDirectionalLightVector(void) const { return _directionalLightVector; }
1021 GX_FORCE_INLINE const GxVector4& getDirectionalLightColor(void) const { return _directionalLightColor; }
1023 GX_FORCE_INLINE const GxVector4& getAmbientColor(void) const { return _ambientColor; }
1024
1026 //-------------------------------------------------------------
1028 //-------------------------------------------------------------
1030private:
1031 f32 _latitude;
1032 f32 _longitude;
1033 f32 _altitude;
1034 f32 _obliquity;
1035
1036 GxDate _date;
1037 s32 _julianDay;
1038 f32 _differentTime;
1039 f64 _rotationTime;
1040 f64 _rotationSpeed;
1041 f64 _rotationSpeedScale;
1042 f32 _siderealTime;
1043
1044 f32 _cloudyFactor;
1045 f32 _stormyFactor;
1046 f32 _blizzardFactor;
1047 GxVector3 _windVector;
1048
1049 GxVector4 _directionalLightVector;
1050 GxVector4 _directionalLightColor;
1051 GxVector4 _ambientColor;
1052
1053 GxSolarSystem _solarSystem;
1054
1056};
1057
1058// アクセスインターフェース
1059GX_FORCE_INLINE GxSysEnvironment* getGxSysEnvironment(void){ return GxSysEnvironment::getSingletonPointer(); }
1060
1061GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_COPY(__CLASS__)
コピー禁止
Definition GxBase.h:233
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
#define GX_CALLBACK_HANDLER_CLASS(__class__, __pOwner__, __func__)
クラスメンバ関数用
Definition GxCallback.h:204
u32 GX_HANDLE
ハンドル
Definition GxDefine.h:214
RENDER_SAMPLER_FILTER
サンプラステート(フィルタ)
Definition GxRender.h:992
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
RENDER_SAMPLER_ADDRESS_MODE
サンプラステート(アドレッシングモード)
Definition GxRender.h:958
GX_PLANET
惑星定義
Definition GxSysEnvironment.h:696
@ MAX
定義数
@ SATURN
"{土星|どせい}"
@ MARS
"{火星|かせい}"
@ URANUS
"{天王星|てんのうせい}"
@ VENUS
"{金星|きんせい}"
@ JUPITER
"{木星|もくせい}"
@ NEPTUNE
"{海王星|かいおうせい}"
@ MERCURY
"{水星|すいせい}"
@ EARTH
"{地球|ちきゅう}"
@ PLUTO
"{冥王星|めいおうせい}"
WEEKDAY
日付クラス
Definition GxSysEnvironment.h:405
@ MAX
定義数
@ FRI
金曜日
@ SAT
土曜日
@ SUN
日曜日
@ WED
水曜日
@ MON
月曜日
@ THU
木曜日
@ TUE
火曜日
#define GX_1KM_PC
KM -> PC.
Definition GxSysEnvironment.h:622
RENDER_MODE
描画モード定義
Definition GxSysEnvironment.h:134
@ RENDER_MODE_SUBTRACTIVE
減算
Definition GxSysEnvironment.h:140
@ RENDER_MODE_BLEND_RESERVED2
ブレンド予備
Definition GxSysEnvironment.h:142
@ RENDER_MODE_DEPTH_TEST_BUT_NO_WRITES
深度テスト(書き込み無し)
Definition GxSysEnvironment.h:148
@ RENDER_MODE_CULL_RESERVED
カリング予備
Definition GxSysEnvironment.h:155
@ RENDER_MODE_BLEND_RESERVED1
ブレンド予備
Definition GxSysEnvironment.h:141
@ RENDER_MODE_OPAQUE
不透明
Definition GxSysEnvironment.h:136
@ RENDER_MODE_TRANSLUCENT
半透明
Definition GxSysEnvironment.h:137
@ RENDER_MODE_CULL_NONE
カリング無し
Definition GxSysEnvironment.h:152
@ RENDER_MODE_DEPTH_DISABLE
深度無効
Definition GxSysEnvironment.h:146
@ RENDER_MODE_CULL_CW
フロントフェースカリング
Definition GxSysEnvironment.h:153
@ RENDER_MODE_CULL_CCW
バックフェースカリング
Definition GxSysEnvironment.h:154
@ RENDER_MODE_BLEND_RESERVED3
ブレンド予備
Definition GxSysEnvironment.h:143
@ RENDER_MODE_CULL_MASK
カリングマスク
Definition GxSysEnvironment.h:156
@ RENDER_MODE_ADDITIVE
加算
Definition GxSysEnvironment.h:139
@ RENDER_MODE_DEPTH_NO_TEST_BUT_WRITES
深度書き込み(テスト無し)
Definition GxSysEnvironment.h:149
@ RENDER_MODE_DEPTH_ENABLE
深度有効
Definition GxSysEnvironment.h:147
@ RENDER_MODE_DEPTH_MASK
深度マスク
Definition GxSysEnvironment.h:150
@ RENDER_MODE_CUTOUT
切り取り
Definition GxSysEnvironment.h:138
@ RENDER_MODE_BLEND_MASK
ブレンドマスク
Definition GxSysEnvironment.h:144
オブジェクト基底クラス
Definition GxBase.h:88
暦ベース抽象クラス
Definition GxSysEnvironment.h:418
constexpr void setYear(s32 year)
年を設定
Definition GxSysEnvironment.h:448
static s32 getDate(s32 julianDay, s32 month)
日を取得
Definition GxSysEnvironment.cpp:1878
s8 _day
Definition GxSysEnvironment.h:501
s8 _month
Definition GxSysEnvironment.h:500
virtual s32 getJulianDay(void) const =0
修正ユリウス日を返す
constexpr void setDay(s32 day)
日を設定
Definition GxSysEnvironment.h:458
static f64 GetGreenwichSiderealTime(f64 Tu)
Definition GxSysEnvironment.cpp:1917
GxDateBase(void)
デフォルトコンストラクタ
Definition GxSysEnvironment.cpp:1805
s16 _year
合計日数
Definition GxSysEnvironment.h:499
constexpr void setMonth(s32 month)
月を設定
Definition GxSysEnvironment.h:453
static constexpr s32 divedeFloor(s32 a, s32 b)
除算(切り捨て)
Definition GxSysEnvironment.h:484
constexpr s32 getMonth(void) const
月を取得
Definition GxSysEnvironment.h:451
GxString getDateString(void) const
日付文字列を返す
Definition GxSysEnvironment.cpp:1887
constexpr s32 getYear(void) const
年を取得
Definition GxSysEnvironment.h:446
constexpr s32 getDay(void) const
日を取得
Definition GxSysEnvironment.h:456
WEEKDAY getWeekday(void) const
曜日を返す
Definition GxSysEnvironment.cpp:1901
Definition GxSysEnvironment.h:509
GxDate(s32 year, s32 month, s32 day)
コンストラクタ
Definition GxSysEnvironment.h:526
GxDate(void)
デフォルトコンストラクタ
Definition GxSysEnvironment.h:524
s32 getJulianDay(void) const override
日を取得
Definition GxSysEnvironment.cpp:2037
ユリウス暦
Definition GxSysEnvironment.h:544
GxJulianDate(void)
デフォルトコンストラクタ
Definition GxSysEnvironment.h:559
s32 getJulianDay(void) const override
日を取得
Definition GxSysEnvironment.cpp:2092
GxJulianDate(s32 year, s32 month, s32 day)
コンストラクタ
Definition GxSysEnvironment.h:561
static GX_FORCE_INLINE T getClamp(const T value, const T min, const T max)
最小値・最大値で切り落とす
Definition GxMath.h:170
軌道計算クラス
Definition GxSysEnvironment.h:584
static GxVector3 calcOrbitalPosition(f64 a, f64 e, f64 M0, f64 n, f64 epoch, f64 t)
軌道上の位置を求める(軌道座標系:焦点が原点)
Definition GxSysEnvironment.cpp:1155
惑星データ取得クラス
Definition GxSysEnvironment.h:711
static const PlanetOribtalElements planetOribtalElements[static_cast< s32 >(GX_PLANET::MAX)]
データテーブル
Definition GxSysEnvironment.h:1250
static constexpr f64 getMoonRadius(void)
月の半径を取得
Definition GxSysEnvironment.h:743
static constexpr f64 getSunRadius(void)
太陽の半径を取得
Definition GxSysEnvironment.h:745
static constexpr f64 getPlanetRadius(GX_PLANET planet)
星の半径を取得
Definition GxSysEnvironment.h:741
乱数クラス
Definition GxRandom.h:20
メルセンヌツイスター乱数クラス
Definition GxSysEnvironment.h:22
~GxRandomMT19937(void) override
デストラクタ
Definition GxSysEnvironment.h:53
void setCallback(GxCallback::GxHandlerBase handle, void *pSource, void *pArgument)
コールバックの設定
Definition GxRenderContext.cpp:1091
テクスチャクラス
Definition GxRenderTexture.h:19
頂点バッファを管理する
Definition GxRenderVertexBuffer.h:20
頂点シェーダに渡す頂点の宣言を管理する
Definition GxRenderVertexDeclaration.h:22
シェーダパッケージリソースクラス
Definition GxResShaderPackage.h:19
太陽系クラス
Definition GxSysEnvironment.h:752
GX_FORCE_INLINE GX_CSTR getMoonNameEnglish(void) const
月の英語名を取得
Definition GxSysEnvironment.h:858
constexpr f64 getMoonRadius(void) const
月半径を取得
Definition GxSysEnvironment.h:835
constexpr f64 getPlanetRadius(GX_PLANET planet) const
惑星半径を取得
Definition GxSysEnvironment.h:827
GX_FORCE_INLINE const GxVector3 & getMoonPositionEC(void) const
月位置を取得(黄道座標系)
Definition GxSysEnvironment.h:829
GX_FORCE_INLINE GX_CSTR getSunNameJapan(void) const
太陽の日本語名を取得
Definition GxSysEnvironment.h:852
GX_FORCE_INLINE const OrbitalElements & getPlanetOrbitalElements(GX_PLANET planet) const
軌道情報を取得
Definition GxSysEnvironment.h:845
static GxVector3 transformPosition(f32 alpha, f32 delta)
赤道座標系から直交座標系への変換
Definition GxSysEnvironment.cpp:1782
void update(f64 at, f64 longitude, f64 latitude)
更新
Definition GxSysEnvironment.cpp:1701
void initialize(void)
初期化
Definition GxSysEnvironment.cpp:1684
GX_FORCE_INLINE const GxVector3 & getPlanetPositionEC(GX_PLANET planet) const
惑星位置を取得
Definition GxSysEnvironment.h:823
GX_FORCE_INLINE const GxVector3 & getPlanetPositionHC(GX_PLANET planet) const
惑星位置を取得
Definition GxSysEnvironment.h:825
GX_FORCE_INLINE const GxMatrixAffine & getMoonOrientation(void) const
月の向きを取得
Definition GxSysEnvironment.h:833
constexpr GX_CSTR getPlanetNameJapan(GX_PLANET planet) const
星の日本語名を取得
Definition GxSysEnvironment.h:848
GX_FORCE_INLINE GX_CSTR getSunNameEnglish(void) const
太陽の英語名を取得
Definition GxSysEnvironment.h:854
constexpr GX_CSTR getPlanetNameEnglish(GX_PLANET planet) const
星の英語名を取得
Definition GxSysEnvironment.h:850
GX_FORCE_INLINE const GxVector3 & getMoonPositionHC(void) const
月位置を取得(地平座標系)
Definition GxSysEnvironment.h:831
GX_FORCE_INLINE const GxVector3 & getSunPositionHC(void) const
太陽位置を取得
Definition GxSysEnvironment.h:837
constexpr f64 getSunRadius(void) const
太陽半径を取得
Definition GxSysEnvironment.h:839
GX_FORCE_INLINE const GxMatrixAffine & getPlanetMatrixECtoPL(void) const
黄道座標から惑星座標へ変換するマトリクスを取得
Definition GxSysEnvironment.h:842
GX_FORCE_INLINE GX_CSTR getMoonNameJapan(void) const
月の日本語名を取得
Definition GxSysEnvironment.h:856
システム基底クラス
Definition GxSysBase.h:18
環境システムクラス
Definition GxSysEnvironment.h:910
GX_FORCE_INLINE GxSolarSystem & getSolarSystem(void)
太陽系を取得
Definition GxSysEnvironment.h:1016
constexpr f32 getAltitude(void) const
標高取得
Definition GxSysEnvironment.h:960
constexpr void setRotationSpeed(f64 speed)
自転速度設定
Definition GxSysEnvironment.h:995
constexpr void setDifferentTime(f32 time)
時差設定
Definition GxSysEnvironment.h:979
constexpr void setBlizzardFactor(f32 factor)
吹雪度合い設定
Definition GxSysEnvironment.h:1010
constexpr void setRotationTime(s32 hour, s32 minute, f64 second)
自転時間設定
Definition GxSysEnvironment.h:989
GX_FORCE_INLINE void setLatitude(f32 latitude)
緯度設定
Definition GxSysEnvironment.h:952
~GxSysEnvironment(void) override
デストラクタ
Definition GxSysEnvironment.h:929
GX_FORCE_INLINE const GxVector4 & getDirectionalLightColor(void) const
ディレクショナルライトの色を取得
Definition GxSysEnvironment.h:1021
GX_FORCE_INLINE const GxVector4 & getDirectionalLightVector(void) const
ディレクショナルライトの方向を取得
Definition GxSysEnvironment.h:1019
GxSysEnvironment(void)
コンストラクタ
Definition GxSysEnvironment.cpp:989
constexpr f32 getLongitude(void) const
経度取得
Definition GxSysEnvironment.h:955
constexpr void setLongitude(f32 longitude)
経度設定
Definition GxSysEnvironment.h:957
GX_FORCE_INLINE void setDate(const GxDate &date)
日付設定
Definition GxSysEnvironment.h:972
const GxDate & getDate(void) const
日付取得
Definition GxSysEnvironment.h:970
constexpr void setObliquity(f32 obliquity)
自転軸の傾き設定
Definition GxSysEnvironment.h:967
constexpr f32 getLatitude(void) const
緯度取得
Definition GxSysEnvironment.h:950
constexpr f32 getBlizzardFactor(void) const
吹雪度合い取得
Definition GxSysEnvironment.h:1008
constexpr void setStormyFactor(f32 factor)
嵐度合い設定
Definition GxSysEnvironment.h:1006
void update(void) override
更新
Definition GxSysEnvironment.cpp:1013
GX_FORCE_INLINE const GxVector4 & getAmbientColor(void) const
環境光の色を取得
Definition GxSysEnvironment.h:1023
constexpr f32 getSiderealTime(void) const
恒星時取得
Definition GxSysEnvironment.h:982
GX_FORCE_INLINE void setJulianDay(s32 julianDay)
日付設定
Definition GxSysEnvironment.h:974
constexpr void setAltitude(f32 altitude)
標高設定
Definition GxSysEnvironment.h:962
constexpr void setCloudyFactor(f32 factor)
曇り度合い設定
Definition GxSysEnvironment.h:1002
constexpr f64 getRotationTime(void) const
自転時間取得
Definition GxSysEnvironment.h:985
constexpr f32 getStormyFactor(void) const
嵐度合い取得
Definition GxSysEnvironment.h:1004
constexpr f32 getObliquity(void) const
自転軸の傾き取得
Definition GxSysEnvironment.h:965
GX_FORCE_INLINE void setWindVector(const GxVector3 &vector)
風の強さを設定
Definition GxSysEnvironment.h:1014
constexpr f64 getRotationSpeedScale(void) const
自転速度取得
Definition GxSysEnvironment.h:993
constexpr void setRotationTime(f64 time)
自転時間設定
Definition GxSysEnvironment.h:987
constexpr f64 getRotationSpeed(void) const
自転速度取得
Definition GxSysEnvironment.h:991
constexpr f32 getDifferentTime(void) const
時差取得
Definition GxSysEnvironment.h:977
constexpr void setRotationSpeedScale(f64 speedScale)
自転速度設定
Definition GxSysEnvironment.h:997
const GxVector3 & getWindVector(void) const
風の強さを取得
Definition GxSysEnvironment.h:1012
constexpr f32 getCloudyFactor(void) const
曇り度合い取得
Definition GxSysEnvironment.h:1000
描画終了ブロッククラス
Definition GxSysEnvironment.h:259
GX_FORCE_INLINE void setCallback(void)
コールバックのセット
Definition GxSysEnvironment.h:285
GX_FORCE_INLINE void blockDrawFinished(void) const
ブロック
Definition GxSysEnvironment.h:291
~BlockDraw(void) override
デストラクタ
Definition GxSysEnvironment.h:276
GX_FORCE_INLINE b32 isDrawFinished(void) const
描画終了判定
Definition GxSysEnvironment.h:306
GPGPUシステムクラス
Definition GxSysEnvironment.h:247
void endUsing(void)
使用終了
Definition GxSysEnvironment.cpp:604
void computeNormalAndHeight(GxRenderTexture *pHeightTexture, f32 normalScale)
法線と高さを計算
Definition GxSysEnvironment.cpp:717
void computePerlinNoise(s32 startOctave, s32 endOctave, f32 amplitude, f32 persistence, f32 base, const GxVector2 *pOrigin)
パーリンノイズを計算
Definition GxSysEnvironment.cpp:767
void endCompute(void)
コンピュート終了
Definition GxSysEnvironment.cpp:669
b32 beginCompute(GxRenderTexture *pTarget, const GxString &computeName)
コンピュート開始
Definition GxSysEnvironment.cpp:622
~GxSysGpgpu(void) override
デストラクタ
Definition GxSysEnvironment.h:328
GxSysGpgpu(void)
コンストラクタ
Definition GxSysEnvironment.cpp:545
void startUsing(void)
使用開始
Definition GxSysEnvironment.cpp:561
constexpr GxRenderTexture * getRandomTexture(s32 index) const
ランダムテクスチャを取得
Definition GxSysEnvironment.h:366
軌道要素クラス
Definition GxSysEnvironment.h:632
constexpr f64 getM0(void) const
平均近点角を取得
Definition GxSysEnvironment.h:663
void update(f64 t)
更新
Definition GxSysEnvironment.cpp:1210
void initialize(f64 epoch, f64 a, f64 e, f64 M0, f64 node, f64 i, f64 omg)
初期化
Definition GxSysEnvironment.cpp:1191
constexpr f64 getEpoch(void) const
元期 (JD)を取得
Definition GxSysEnvironment.h:657
GxVector3 calcOrbitalPosition(f64 phi) const
軌道上の位置の計算
Definition GxSysEnvironment.cpp:1222
constexpr f64 getA(void) const
軌道長半径(AU)を取得
Definition GxSysEnvironment.h:659
GX_FORCE_INLINE GxMatrixAffine getTransformMatrix(void) const
変換行列を取得
Definition GxSysEnvironment.h:667
constexpr f64 getE(void) const
軌道離心率を取得
Definition GxSysEnvironment.h:661
constexpr f64 getN(void) const
平均日々運動を取得
Definition GxSysEnvironment.h:665
GX_FORCE_INLINE GxVector3 getPosition(void) const
座標を取得
Definition GxSysEnvironment.h:669
描画モードクラス
Definition GxSysEnvironment.h:161
RenderMode(void)
コンストラクタ
Definition GxSysEnvironment.cpp:354
void setRenderMode(u32 mode)
描画モードを設定
Definition GxSysEnvironment.cpp:389
~RenderMode(void) override
デストラクタ
Definition GxSysEnvironment.h:170
void initialize(void)
初期化
Definition GxSysEnvironment.cpp:362
シングルトン基礎クラス
Definition GxSingleton.h:19
static constexpr GxSysGpgpu * getSingletonPointer(void)
Definition GxSingleton.h:59
ユーティリティメソッド
Definition GxSysEnvironment.h:90
static void createMipmap(GxRenderTexture *pTexture)
ミップマップの生成
Definition GxSysEnvironment.cpp:103
static void setMaterialFunctions(GxResShaderPackage *pShaderPackage, GxShaderPackage::GxShaderCode *pShaderCode, const GxString &materialName, const GxString &materialFunctionName)
マテリアル関数を設定する
Definition GxSysEnvironment.cpp:204
static GxRenderVertexBuffer * createVertexBufferSphere(s32 xdiv, s32 ydiv, s32 ycount)
スフィア頂点バッファの生成
Definition GxSysEnvironment.cpp:275
static GxRenderVertexDeclaration * createVertexDeclarationSphere(void)
スフィア頂点定義の生成
Definition GxSysEnvironment.cpp:320
static void setTexture(GX_HANDLE handle, GxRenderTexture *pTexture, RENDER_SAMPLER_FILTER min, RENDER_SAMPLER_FILTER mag, RENDER_SAMPLER_FILTER mip, RENDER_SAMPLER_ADDRESS_MODE addressU, RENDER_SAMPLER_ADDRESS_MODE addressV)
テクスチャの設定
Definition GxSysEnvironment.cpp:262
static GxVector4 getFogParam(f32 startDistance, f32 endDistance, f32 min, f32 max)
フォグパラメータの生成
Definition GxSysEnvironment.cpp:338
static s32 getMaterialFunctionIndex(GxResShaderPackage *pShaderPackage, GX_HANDLE handleMaterialFunctions, const GxString &materialFunctionName)
マテリアル関数名からマテリアル関数番号を取得する
Definition GxSysEnvironment.cpp:182
static b32 setShaders(GxResShaderPackage *pShaderPackage, GxShaderPackage::GxShaderCode *pShaderCode)
シェーダコードの設定
Definition GxSysEnvironment.cpp:216
static void setSamplerState(GX_HANDLE handle, RENDER_SAMPLER_FILTER min, RENDER_SAMPLER_FILTER mag, RENDER_SAMPLER_FILTER mip, RENDER_SAMPLER_ADDRESS_MODE addressU, RENDER_SAMPLER_ADDRESS_MODE addressV)
サンプラの設定
Definition GxSysEnvironment.cpp:236
2次元浮動小数点数クラス
Definition GxStruct.h:22
3次元浮動小数点数クラス
Definition GxStruct.h:91
アフィン変換行列(行優先)
Definition GxMatrix.h:330
惑星の軌道要素
Definition GxSysEnvironment.h:720
f64 _e
軌道離心率
Definition GxSysEnvironment.h:723
f64 _i
軌道傾角(度)
Definition GxSysEnvironment.h:725
f64 _omg_bar
近日点黄経(度)
Definition GxSysEnvironment.h:727
f64 _Re
赤道半径(km)
Definition GxSysEnvironment.h:729
f64 _a
軌道長半径(AU)
Definition GxSysEnvironment.h:722
f64 _epoch
元期(JD)
Definition GxSysEnvironment.h:721
f64 _L
平均黄経(度)
Definition GxSysEnvironment.h:728
f64 _T
公転周期(年)...未使用
Definition GxSysEnvironment.h:724
f64 _node
昇交点黄経(度)
Definition GxSysEnvironment.h:726
シェーダコード
Definition GxShaderPackage.h:52
文字列型クラス
Definition GxString.h:18
Definition GxBase.h:24
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
f32 _z
Z値
Definition GxVector.h:572
f32 _y
Y値
Definition GxVector.h:571
f32 _x
X値
Definition GxVector.h:570
4次元ベクトル
Definition GxVector.h:582
パーリンノイズパラメータ構造体
Definition GxSysEnvironment.h:197
f32 _amplitude
振幅
Definition GxSysEnvironment.h:236
void clamp(void)
クランプ
Definition GxSysEnvironment.cpp:527
u16 _seed
シード
Definition GxSysEnvironment.h:233
s8 _startOctave
開始オクターブ
Definition GxSysEnvironment.h:234
f32 _persistence
永続性
Definition GxSysEnvironment.h:237
f32 _base
基準値
Definition GxSysEnvironment.h:238
s8 _endOctave
終了オクターブ
Definition GxSysEnvironment.h:235
PerlinNoiseParam(s8 startOctave, s8 endOctave, f32 amplitude, f32 persistence, f32 base, u16 seed)
コンストラクタ
Definition GxSysEnvironment.h:215
頂点座標データ
Definition GxSysEnvironment.h:98
GxFloat3 _position
座標
Definition GxSysEnvironment.h:99
GxFloat2 _uv
UV座標
Definition GxSysEnvironment.h:100
32bitブーリアン
Definition GxDefine.h:173