2025.6.1
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
/***********************************************************************************************************************
|
||||
*
|
||||
* Copyright (c) 2010 - 2025 by Tech Soft 3D, Inc.
|
||||
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
|
||||
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
|
||||
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
|
||||
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
|
||||
* scope and manner of such use.
|
||||
*
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef SHADER_H
|
||||
#define SHADER_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <glad/glad.h>
|
||||
#include <glm/mat4x4.hpp>
|
||||
#include <glm/vec2.hpp>
|
||||
#include <glm/vec3.hpp>
|
||||
#include <glm/vec4.hpp>
|
||||
|
||||
#include "../../utils/properties.h"
|
||||
|
||||
class Shader
|
||||
{
|
||||
public:
|
||||
GLuint ID;
|
||||
int current_graphics_id = -1;
|
||||
Shader(const char* vertexFile, const char* fragmentFile);
|
||||
void use();
|
||||
void detach();
|
||||
void add_light_properties(const glm::vec3& light_position);
|
||||
|
||||
void update_view_matrix(const glm::mat4& mat) const;
|
||||
void update_model_matrix(const glm::mat4& mat) const;
|
||||
void update_world_matrix(const glm::mat4& mat) const;
|
||||
void update_projection_matrix(const glm::mat4& mat) const;
|
||||
|
||||
void update_mesh_style(const utils::properties::style::Graphics& graphics, bool& is_first);
|
||||
|
||||
void set_vec3(const std::string& name, const glm::vec3& value) const;
|
||||
private:
|
||||
void update_mesh_color(const glm::vec4& rgba) const;
|
||||
void update_mesh_material(const utils::properties::style::Material& material) const;
|
||||
|
||||
void compile_errors(unsigned int shader, const std::string & type);
|
||||
void set_value(const std::string& name, float value) const;
|
||||
void set_vec2(const std::string& name, const glm::vec2& value) const;
|
||||
void set_vec2(const std::string& name, float x, float y) const;
|
||||
void set_vec3(const std::string& name, float x, float y, float z) const;
|
||||
void set_vec4(const std::string& name, const glm::vec4& value) const;
|
||||
void set_vec4(const std::string& name, float x, float y, float z, float w) const;
|
||||
void set_mat4(const std::string& name, const glm::mat4& mat) const;
|
||||
};
|
||||
#endif // SHADER_H
|
||||
Reference in New Issue
Block a user