40 lines
933 B
C++
40 lines
933 B
C++
#pragma once
|
|
|
|
#include <DirectXMath.h>
|
|
|
|
constexpr auto LIGHT_TYPE_DIRECTIONAL = 0;
|
|
constexpr auto LIGHT_TYPE_POINT = 1;
|
|
constexpr auto LIGHT_TYPE_SPOT = 2;
|
|
|
|
struct Light
|
|
{
|
|
int Type;
|
|
DirectX::XMFLOAT3 Direction;
|
|
float Range;
|
|
DirectX::XMFLOAT3 Position;
|
|
float Intensity;
|
|
DirectX::XMFLOAT3 Color;
|
|
float SpotFalloff;
|
|
DirectX::XMFLOAT3 Padding;
|
|
|
|
static Light Directional(DirectX::XMFLOAT3 _direction, DirectX::XMFLOAT3 _color, float _intensity)
|
|
{
|
|
Light light = {};
|
|
light.Type = LIGHT_TYPE_DIRECTIONAL;
|
|
light.Direction = _direction;
|
|
light.Color = _color;
|
|
light.Intensity = _intensity;
|
|
return light;
|
|
};
|
|
|
|
static Light Point(DirectX::XMFLOAT3 _position, DirectX::XMFLOAT3 _color, float _intensity, float _range)
|
|
{
|
|
Light light = {};
|
|
light.Type = LIGHT_TYPE_POINT;
|
|
light.Position = _position;
|
|
light.Color = _color;
|
|
light.Intensity = _intensity;
|
|
light.Range = _range;
|
|
return light;
|
|
};
|
|
};
|