This repository was archived by the owner on Jun 11, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathShadedShaderProgram.hpp
More file actions
62 lines (51 loc) · 2.41 KB
/
ShadedShaderProgram.hpp
File metadata and controls
62 lines (51 loc) · 2.41 KB
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
/// Copyright 2025 Ana Oliveira, Humberto Gomes, Mariana Rocha, Sara Lopes
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
#pragma once
#include <glad/glad.h>
#include <glm/mat4x4.hpp>
#include <glm/vec3.hpp>
#include <memory>
#include <string>
#include <vector>
#include "engine/render/ShaderProgram.hpp"
#include "engine/render/Texture.hpp"
#include "engine/scene/light/Light.hpp"
#include "engine/scene/Material.hpp"
namespace engine::render {
class ShadedShaderProgram : public ShaderProgram {
private:
static const std::string vertexShaderSource, fragmentShaderSource;
int pointLights, directionalLights, spotlights;
GLint fullMatrixUniformLocation, worldMatrixUniformLocation, normalMatrixUniformLocation,
cameraPositionUniformLocation, texturedUniformLocation, diffuseUniformLocation,
ambientUniformLocation, specularUniformLocation, emissiveUniformLocation,
shininessUniformLocation, pointPositionsUniformLocation,
directionalDirectionsUniformLocation, spotPositionsUniformLocation,
spotDirectionsUniformLocation, spotCutoffsUniformLocation;
public:
ShadedShaderProgram(int _pointLights, int _directionalLights, int _spotlights);
ShadedShaderProgram(const ShadedShaderProgram &program) = delete;
ShadedShaderProgram(ShadedShaderProgram &&program) = delete;
void setFullMatrix(const glm::mat4 &fullMatrix) const;
void setWorldMatrix(const glm::mat4 &worldMatrix) const;
void setNormalMatrix(const glm::mat4 &normalMatrix) const;
void setCameraPosition(const glm::vec3 &position) const;
void setTexture(const Texture &texture, const scene::Material &material) const;
void setMaterial(const scene::Material &material) const;
void setLights(const std::vector<std::unique_ptr<scene::light::Light>> &lights) const;
private:
static std::string
initializeFragmentShader(int pointLights, int directionalLights, int spotlights);
};
}