-
Notifications
You must be signed in to change notification settings - Fork 0
/
light.cpp
103 lines (74 loc) · 2.99 KB
/
light.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//=============================================================================
//
// ライト処理 [light.cpp]
// Author :
//
//=============================================================================
#include "main.h"
#include "renderer.h"
//*****************************************************************************
// マクロ定義
//*****************************************************************************
//*****************************************************************************
// プロトタイプ宣言
//*****************************************************************************
//*****************************************************************************
// グローバル変数
//*****************************************************************************
static LIGHT g_Light[LIGHT_MAX];
static FOG g_Fog;
//=============================================================================
// 初期化処理
//=============================================================================
void InitLight(void)
{
//ライト初期化
for (int i = 0; i < LIGHT_MAX; i++)
{
g_Light[i].Position = XMFLOAT3( 0.0f, 0.0f, 0.0f );
g_Light[i].Direction = XMFLOAT3( 0.0f, -1.0f, 0.0f );
g_Light[i].Diffuse = XMFLOAT4( 1.0f, 1.0f, 1.0f, 1.0f );
g_Light[i].Ambient = XMFLOAT4( 0.0f, 0.0f, 0.0f, 0.0f );
g_Light[i].Attenuation = 100.0f; // 減衰距離
g_Light[i].Type = LIGHT_TYPE_NONE; // ライトのタイプ
g_Light[i].Enable = FALSE; // ON / OFF
SetLight(i, &g_Light[i]);
}
// 並行光源の設定(世界を照らす光)
g_Light[0].Direction = XMFLOAT3(-0.5f, -1.0f, -0.5f);
g_Light[0].Diffuse = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f); // 光の色
g_Light[0].Type = LIGHT_TYPE_DIRECTIONAL; // 並行光源
g_Light[0].Enable = TRUE; // このライトをON
SetLight(0, &g_Light[0]); // これで設定している
// フォグの初期化(霧の効果)
g_Fog.FogStart = 500.0f; // 視点からこの距離離れるとフォグがかかり始める
g_Fog.FogEnd = 150000.0f; // ここまで離れるとフォグの色で見えなくなる
g_Fog.FogColor = XMFLOAT4(1.0f, 1.0f, 1.0f, 0.5f); // フォグの色
SetFog(&g_Fog);
SetFogEnable(TRUE); // 他の場所もチェックする shadow
}
//=============================================================================
// 更新処理
//=============================================================================
void UpdateLight(void)
{
}
//=============================================================================
// ライトの設定
// Typeによってセットするメンバー変数が変わってくる
//=============================================================================
void SetLightData(int index, LIGHT *light)
{
SetLight(index, light);
}
LIGHT *GetLightData(int index)
{
return(&g_Light[index]);
}
//=============================================================================
// フォグの設定
//=============================================================================
void SetFogData(FOG *fog)
{
SetFog(fog);
}