R2 Core 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
13 R2_surface_output_t
14 R2_deferredSurfaceMain (
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
R2SurfaceShaderMain.h
The main function that all deferred surface shaders must implement.
R2_basic_surface_parameters_t::emission_amount
float emission_amount
Emission level in the range [0, 1]
Definition: R2SurfaceBasicTypes.h:11
R2_vertex_data_t::uv
vec2 uv
Object-space UV.
Definition: R2SurfaceTypes.h:19
R2_surface_derived_t::normal_bumped
vec3 normal_bumped
Final uncompressed eye-space normal produced by bump/normal mapping.
Definition: R2SurfaceTypes.h:32
R2_basic_surface_parameters_t::specular_color
vec3 specular_color
RGB specular color.
Definition: R2SurfaceBasicTypes.h:19
R2_deferredSurfaceMain
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)
Definition: R2SurfaceBasic.h:14
R2_basic_surface_textures_t::emission
sampler2D emission
R emission level texture.
Definition: R2SurfaceBasicTypes.h:35
R2_basic_surface_parameters_t
Constant surface parameters that all basic surface shaders will receive.
Definition: R2SurfaceBasicTypes.h:9
R2_basic_surface_textures_t
Input textures that all basic surface shaders will receive.
Definition: R2SurfaceBasicTypes.h:29
R2_basic_surface_parameters_t::albedo_color
vec4 albedo_color
Base RGBA albedo color.
Definition: R2SurfaceBasicTypes.h:14
R2_surface_textures_t
Textures that are required by all surfaces.
Definition: R2SurfaceTypes.h:37
R2_vertex_data_t
Interpolated vertex data that all deferred surface shaders will receive.
Definition: R2SurfaceTypes.h:11
R2_basic_surface_textures_t::albedo
sampler2D albedo
RGBA albedo texture.
Definition: R2SurfaceBasicTypes.h:31
R2_basic_surface_parameters_t::specular_exponent
float specular_exponent
Specular exponent in the range [0, 256]
Definition: R2SurfaceBasicTypes.h:21
R2_surface_output_t
The type of surface details that all deferred surface shaders are required to calculate.
Definition: R2SurfaceOutput.h:9
R2_surface_derived_t
Derived surface data that all deferred surface shaders will receive.
Definition: R2SurfaceTypes.h:30
R2_basic_surface_parameters_t::albedo_mix
float albedo_mix
Albedo color/texture mix.
Definition: R2SurfaceBasicTypes.h:16
R2_basic_surface_parameters_t::alpha_discard_threshold
float alpha_discard_threshold
Alpha discard threshold in the range [0, 1].
Definition: R2SurfaceBasicTypes.h:24
R2SurfaceBasicTypes.h
Types for basic surfaces.
R2_surface_matrices_instance_t
Matrices related to the rendered instance that all deferred surface shaders will receive.
Definition: R2SurfaceTypes.h:44
R2_basic_surface_textures_t::specular
sampler2D specular
RGB specular map texture.
Definition: R2SurfaceBasicTypes.h:33
R2_view_t
Matrices and parameters related to the view that all surface shaders will receive.
Definition: R2View.h:9