Euphoria
materialshader.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 
5 #include "core/enum.h"
6 #include "io/vfs_path.h"
7 
8 #include "render/shader.h"
9 
10 namespace eu::render
11 {
12  struct Light;
13 
15  {
18 
20  (
21  const core::EnumValue& a_name,
22  const io::FilePath& a_path
23  );
24  };
25 
27  {
30 
32  (
33  ShaderUniform a_uniform,
34  const core::EnumValue& a_name
35  );
36  };
37 
41  {
43 
44  // private:
48 
53 
54  bool has_light;
66 
69 
70  std::vector<MaterialShaderBinding> bindings;
71  std::vector<MaterialShaderDefaultTexture> default_textures;
72 
74 
75  bool load
76  (
77  io::FileSystem* file_system,
78  const io::FilePath& path
79  );
80 
81  void use_shader();
82  void set_projection(const mat4f& projection_data);
83  void set_view(const mat4f& view_data);
84  void set_model(const mat4f& model_data);
85  void setup_light(const Light& light, const vec3f& camera);
86 
87  void set_colors
88  (
89  const Rgb& ambient_data,
90  const Rgb& diffuse_data,
91  const Rgb& specular_data,
92  float shininess_data
93  );
94  };
95 
96 }
Definition: rgb.h:62
Definition: mat4.h:14
MaterialShaderBinding(ShaderUniform a_uniform, const core::EnumValue &a_name)
MaterialShaderDefaultTexture(const core::EnumValue &a_name, const io::FilePath &a_path)
Extends a regular Shader with uniform bindings for 3d rendering.
ShaderUniform light_cutoff_angle_outer
void setup_light(const Light &light, const vec3f &camera)
ShaderUniform light_attenuation_constant
void set_projection(const mat4f &projection_data)
std::vector< MaterialShaderDefaultTexture > default_textures
bool load(io::FileSystem *file_system, const io::FilePath &path)
void set_colors(const Rgb &ambient_data, const Rgb &diffuse_data, const Rgb &specular_data, float shininess_data)
void set_model(const mat4f &model_data)
ShaderUniform light_attenuation_linear
void set_view(const mat4f &view_data)
std::vector< MaterialShaderBinding > bindings
render::ShaderProgram shader
ShaderUniform light_cutoff_angle_inner
ShaderUniform light_attenuation_quadratic
Definition: vec3.h:48