39 const DirectX::XMMATRIX& viewMatrix,
40 const DirectX::XMMATRIX& projectionMatrix,
41 const DirectX::XMFLOAT4* diffuseColors,
42 const DirectX::XMFLOAT4* lightPositions,
43 const DirectX::XMFLOAT4* ambientColors,
44 const DirectX::XMFLOAT3& cameraPosition,
45 const DirectX::XMFLOAT4& sunlightDiffuse,
46 const DirectX::XMFLOAT4& sunlightAmbient,
47 const DirectX::XMFLOAT3& sunlightDirection,
48 float sunlightIntensity) {
55 if (!transform || !render || !shader || !render->GetModel())
59 XMMATRIX scaleMatrix = transform->GetScaleMatrix();
60 XMMATRIX rotateMatrix = transform->GetRotateMatrix();
61 XMMATRIX translateMatrix = transform->GetTranslateMatrix();
63 XMMATRIX worldMatrix = XMMatrixMultiply(
64 XMMatrixMultiply(scaleMatrix, rotateMatrix),
69 render->Render(m_deviceContext);
72 switch (shader->GetActiveShader()) {
73 case ShaderType::ALPHA_MAPPING:
74 return m_shaderManager->render_alpha_map_shader(
76 render->GetIndexCount(),
80 render->GetTexture(TextureType::Diffuse, 0),
81 render->GetTexture(TextureType::Diffuse, 1),
82 render->GetTexture(TextureType::Alpha, 0)
85 case ShaderType::CEL_SHADING:
86 return m_shaderManager->render_cel_shading_shader(
88 render->GetIndexCount(),
92 render->GetTexture(TextureType::Diffuse, 0),
99 case ShaderType::NORMAL_MAPPING:
100 return m_shaderManager->render_normal_map_shader(
102 render->GetIndexCount(),
106 render->GetTexture(TextureType::Diffuse, 0),
107 render->GetTexture(TextureType::Normal, 0),
112 case ShaderType::SPECULAR_MAPPING:
114 return m_shaderManager->render_spec_map_shader(
116 render->GetIndexCount(),
120 render->GetTexture(TextureType::Diffuse, 0),
121 render->GetTexture(TextureType::Normal, 0),
122 render->GetTexture(TextureType::Specular, 0),
130 case ShaderType::LIGHTING:
133 DirectX::XMFLOAT4 localDiffuseColors[4];
134 DirectX::XMFLOAT4 localLightPositions[4];
135 DirectX::XMFLOAT4 localAmbientColors[4];
138 for (
int i = 0; i < 4; i++) {
139 localDiffuseColors[i] = diffuseColors[i];
140 localLightPositions[i] = lightPositions[i];
141 localAmbientColors[i] = ambientColors[i];
144 return m_shaderManager->renderlight_shader(
146 render->GetIndexCount(),
150 render->GetTexture(TextureType::Diffuse, 0),
157 case ShaderType::SUNLIGHT:
158 return m_shaderManager->render_sunlight_shader(
160 render->GetIndexCount(),
164 render->GetTexture(TextureType::Diffuse, 0),
171 case ShaderType::SKYBOX:
172 return m_shaderManager->render_skybox_shader(
174 render->GetIndexCount(),
178 render->GetTexture(TextureType::Diffuse, 0),
185 case ShaderType::TEXTURE:
187 return m_shaderManager->render_texture_shader(
189 render->GetIndexCount(),
193 render->GetTexture(TextureType::Diffuse, 0)
215 const DirectX::XMMATRIX& viewMatrix,
216 const DirectX::XMMATRIX& projectionMatrix,
217 const DirectX::XMFLOAT4* diffuseColors,
218 const DirectX::XMFLOAT4* lightPositions,
219 const DirectX::XMFLOAT4* ambientColors,
220 const DirectX::XMFLOAT3& cameraPos,
221 const DirectX::XMFLOAT4& sunlightDiffuse,
222 const DirectX::XMFLOAT4& sunlightAmbient,
223 const DirectX::XMFLOAT3& sunlightDirection,
224 float sunlightIntensity) {
231 for (
auto& entity : entities) {
236 if (!transform)
continue;
239 if (!render->IsVisible())
continue;
243 diffuseColors, lightPositions, ambientColors,cameraPos,
244 sunlightDiffuse, sunlightAmbient, sunlightDirection,
245 sunlightIntensity)) {