Brenta Engine 1.2
Loading...
Searching...
No Matches
phong.hpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#pragma once
7
8#include <brenta/renderer/dir_light.hpp>
9#include <brenta/renderer/point_light.hpp>
10
11#include <glad/glad.h>
12
13namespace brenta
14{
15
17{
18public:
19
20 glm::vec3 ambient = glm::vec3(0.1f, 0.1f, 0.1f);
21 glm::vec3 diffuse = glm::vec3(0.5f, 0.5f, 0.5f);
22 glm::vec3 specular = glm::vec3(1.0f, 1.0f, 1.0f);
23
24 PhongPointLight() = default;
25
26 void apply(int light_number) override;
27
28 PhongPointLight &set_ambient(glm::vec3 ambient);
29 PhongPointLight &set_diffuse(glm::vec3 diffuse);
30 PhongPointLight &set_specular(glm::vec3 specular);
31 PhongPointLight &set_position(glm::vec3 position);
32 PhongPointLight &set_strength(float strength);
33 PhongPointLight &set_constant(float constant);
34 PhongPointLight &set_linear(float linear);
35 PhongPointLight &set_quadratic(float quadratic);
36
37private:
38
39};
40
41class PhongDirLight : public DirLight
42{
43public:
44
45 glm::vec3 ambient = glm::vec3(0.7f, 0.7f, 0.7f);
46 glm::vec3 diffuse = glm::vec3(0.7f, 0.7f, 0.7f);
47 glm::vec3 specular = glm::vec3(1.0f, 1.0f, 1.0f);
48
49 PhongDirLight() = default;
50
51 void apply() override;
52
53 PhongDirLight &set_ambient(glm::vec3 ambient);
54 PhongDirLight &set_diffuse(glm::vec3 diffuse);
55 PhongDirLight &set_specular(glm::vec3 specular);
56 PhongDirLight &set_direction(glm::vec3 direction);
57 PhongDirLight &set_strength(float strength);
58
59private:
60
61};
62
63} // namespace brenta