Khaotic Engine Reborn
Loading...
Searching...
No Matches
light_shader_class.h
1
2// Filename: lightshaderclass.h
4#ifndef _LIGHTSHADERCLASS_H_
5#define _LIGHTSHADERCLASS_H_
6#pragma once
7
9// GLOBALS //
11constexpr int num_lights = 4;
13// INCLUDES //
15#include "Logger.h"
16#include <d3d11.h>
17#include <d3dcompiler.h>
18#include <directxmath.h>
19#include <fstream>
20using namespace DirectX;
21using namespace std;
22
23
25// Class name: light_shader_class
28{
29private:
30 struct matrix_buffer_type
31 {
32 XMMATRIX world;
33 XMMATRIX view;
34 XMMATRIX projection;
35 };
36
37 struct camera_buffer_type
38 {
39 XMFLOAT3 cameraPosition;
40 float padding;
41 };
42
43 struct light_buffer_type
44 {
45 XMFLOAT4 ambientColor;
46 XMFLOAT4 diffuseColor;
47 XMFLOAT3 lightDirection;
48 float padding; // Added extra padding so structure is a multiple of 16 for CreateBuffer function requirements.
49 float specularPower;
50 XMFLOAT4 specularColor;
51 };
52
53 struct light_color_buffer_type
54 {
55 XMFLOAT4 diffuseColor[num_lights];
56 };
57
58 struct light_position_buffer_type
59 {
60 XMFLOAT4 lightPosition[num_lights];
61 };
62
63public:
67
68 bool initialize(ID3D11Device*, HWND);
69 void shutdown();
70 bool render(ID3D11DeviceContext*, int, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[], XMFLOAT4[]);
71
72private:
73 bool initialize_shader(ID3D11Device*, HWND, WCHAR*, WCHAR*);
74 void shutdown_shader();
75 void output_shader_error_message(ID3D10Blob*, HWND, WCHAR*);
76
77 bool set_shader_parameters(ID3D11DeviceContext*, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[], XMFLOAT4[]);
78 void render_shader(ID3D11DeviceContext*, int);
79
80private:
81 ID3D11VertexShader* vertex_shader_;
82 ID3D11PixelShader* pixel_shader_;
83 ID3D11InputLayout* layout_;
84 ID3D11SamplerState* sample_state_;
85 ID3D11Buffer* matrix_buffer_;
86 ID3D11Buffer* camera_buffer_;
87 ID3D11Buffer* light_buffer_;
88 ID3D11Buffer* light_color_buffer_;
89 ID3D11Buffer* light_position_buffer_;
90};
91
92#endif