R2 Shaders
R2SurfaceBasic.h
Go to the documentation of this file.
1 #ifndef R2_SURFACE_BASIC_H
2 #define R2_SURFACE_BASIC_H
3 
4 /// \file R2SurfaceBasic.h
5 /// \brief Basic surface implementation
6 
7 #include "R2SurfaceShaderMain.h"
8 #include "R2SurfaceBasicTypes.h"
9 
10 uniform R2_basic_surface_textures_t R2_basic_surface_textures;
11 uniform R2_basic_surface_parameters_t R2_basic_surface_parameters;
12 
15  const R2_vertex_data_t data,
16  const R2_surface_derived_t derived,
17  const R2_surface_textures_t textures,
18  const R2_view_t view,
19  const R2_surface_matrices_instance_t matrices_instance)
20 {
21  vec4 albedo_sample =
22  texture (R2_basic_surface_textures.albedo, data.uv);
23  vec4 surface =
24  mix (R2_basic_surface_parameters.albedo_color,
25  albedo_sample,
26  R2_basic_surface_parameters.albedo_mix * albedo_sample.w);
27 
28  float emission_sample =
29  texture (R2_basic_surface_textures.emission, data.uv).x;
30  float emission =
31  R2_basic_surface_parameters.emission_amount * emission_sample;
32 
33  vec3 specular_sample =
34  texture (R2_basic_surface_textures.specular, data.uv).xyz;
35  vec3 specular =
36  specular_sample * R2_basic_surface_parameters.specular_color;
37 
38  bool discarded =
39  surface.w < R2_basic_surface_parameters.alpha_discard_threshold;
40 
41  return R2_surface_output_t (
42  surface.xyz,
43  emission,
44  derived.normal_bumped,
45  specular,
46  R2_basic_surface_parameters.specular_exponent,
47  discarded
48  );
49 }
50 
51 #endif // R2_SURFACE_BASIC_H
The main function that all deferred surface shaders must implement.
float emission_amount
Emission level in the range [0, 1]
vec2 uv
Object-space UV.
vec3 normal_bumped
Final uncompressed eye-space normal produced by bump/normal mapping.
vec3 specular_color
RGB specular color.
R2_surface_output_t R2_deferredSurfaceMain(const R2_vertex_data_t data, const R2_surface_derived_t derived, const R2_surface_textures_t textures, const R2_view_t view, const R2_surface_matrices_instance_t matrices_instance)
sampler2D emission
R emission level texture.
Constant surface parameters that all basic surface shaders will receive.
Input textures that all basic surface shaders will receive.
vec4 albedo_color
Base RGBA albedo color.
Textures that are required by all surfaces.
Interpolated vertex data that all deferred surface shaders will receive.
sampler2D albedo
RGBA albedo texture.
float specular_exponent
Specular exponent in the range [0, 256]
The type of surface details that all deferred surface shaders are required to calculate.
Derived surface data that all deferred surface shaders will receive.
float albedo_mix
Albedo color/texture mix.
float alpha_discard_threshold
Alpha discard threshold in the range [0, 1].
Types for basic surfaces.
Matrices related to the rendered instance that all deferred surface shaders will receive.
sampler2D specular
RGB specular map texture.
Matrices and parameters related to the view that all surface shaders will receive.
Definition: R2View.h:9