Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/clay/shaders/clay_frag.glsl')
-rw-r--r--source/blender/draw/engines/clay/shaders/clay_frag.glsl252
1 files changed, 0 insertions, 252 deletions
diff --git a/source/blender/draw/engines/clay/shaders/clay_frag.glsl b/source/blender/draw/engines/clay/shaders/clay_frag.glsl
deleted file mode 100644
index 1939e4b735d..00000000000
--- a/source/blender/draw/engines/clay/shaders/clay_frag.glsl
+++ /dev/null
@@ -1,252 +0,0 @@
-uniform vec2 invscreenres;
-uniform mat4 WinMatrix;
-
-/* Matcap */
-uniform sampler2DArray matcaps;
-
-/* Screen Space Occlusion */
-/* store the view space vectors for the corners of the view frustum here.
- * It helps to quickly reconstruct view space vectors by using uv coordinates,
- * see http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer */
-uniform vec4 viewvecs[3];
-uniform vec4 ssao_params;
-
-uniform sampler2D ssao_jitter;
-
-/* Material Parameters packed in an UBO */
-struct Material {
- vec4 ssao_params_var;
- vec4 matcap_hsv_id;
- vec4 matcap_rot; /* vec4 to ensure 16 bytes alignement (don't trust compiler) */
-};
-
-layout(std140) uniform samples_block {
- vec4 ssao_samples[500];
-};
-
-layout(std140) uniform matcaps_block {
- vec4 matcaps_color[24];
-};
-
-layout(std140) uniform material_block {
- Material matcaps_param[MAX_MATERIAL];
-};
-
-#ifdef DEFERRED_SHADING
-uniform sampler2D depthtex;
-uniform sampler2D normaltex;
-uniform isampler2D idtex;
-int mat_id; /* global */
-#else
-uniform int mat_id;
-#endif
-
-/* Aliases */
-#define ssao_samples_num ssao_params.x
-#define jitter_tilling ssao_params.yz
-#define dfdy_sign ssao_params.w
-
-#define matcap_hsv matcaps_param[mat_id].matcap_hsv_id.xyz
-#define matcap_index matcaps_param[mat_id].matcap_hsv_id.w
-#define matcap_rotation matcaps_param[mat_id].matcap_rot.xy
-
-#ifndef DEFERRED_SHADING
-# ifdef USE_FLAT_NORMAL
-flat in vec3 normal;
-# else
-in vec3 normal;
-# endif
-#endif
-
-out vec4 fragColor;
-
-/* TODO Move this to SSAO modules */
-/* simple depth reconstruction, see http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer
- * we change the factors from the article to fit the OpennGL model. */
-vec3 get_view_space_from_depth(in vec2 uvcoords, in float depth)
-{
- if (WinMatrix[3][3] == 0.0) {
- /* Perspective */
- float d = 2.0 * depth - 1.0;
-
- float zview = -WinMatrix[3][2] / (d + WinMatrix[2][2]);
-
- return zview * (viewvecs[0].xyz + vec3(uvcoords, 0.0) * viewvecs[1].xyz);
- }
- else {
- /* Orthographic */
- vec3 offset = vec3(uvcoords, depth);
-
- return viewvecs[0].xyz + offset * viewvecs[1].xyz;
- }
-}
-
-#ifdef USE_HSV
-void rgb_to_hsv(vec3 rgb, out vec3 outcol)
-{
- float cmax, cmin, h, s, v, cdelta;
- vec3 c;
-
- cmax = max(rgb[0], max(rgb[1], rgb[2]));
- cmin = min(rgb[0], min(rgb[1], rgb[2]));
- cdelta = cmax - cmin;
-
- v = cmax;
- if (cmax != 0.0)
- s = cdelta / cmax;
- else {
- s = 0.0;
- h = 0.0;
- }
-
- if (s == 0.0) {
- h = 0.0;
- }
- else {
- c = (vec3(cmax, cmax, cmax) - rgb.xyz) / cdelta;
-
- if (rgb.x == cmax) h = c[2] - c[1];
- else if (rgb.y == cmax) h = 2.0 + c[0] - c[2];
- else h = 4.0 + c[1] - c[0];
-
- h /= 6.0;
-
- if (h < 0.0)
- h += 1.0;
- }
-
- outcol = vec3(h, s, v);
-}
-
-void hsv_to_rgb(vec3 hsv, out vec3 outcol)
-{
- float i, f, p, q, t, h, s, v;
- vec3 rgb;
-
- h = hsv[0];
- s = hsv[1];
- v = hsv[2];
-
- if (s == 0.0) {
- rgb = vec3(v, v, v);
- }
- else {
- if (h == 1.0)
- h = 0.0;
-
- h *= 6.0;
- i = floor(h);
- f = h - i;
- rgb = vec3(f, f, f);
- p = v * (1.0 - s);
- q = v * (1.0 - (s * f));
- t = v * (1.0 - (s * (1.0 - f)));
-
- if (i == 0.0) rgb = vec3(v, t, p);
- else if (i == 1.0) rgb = vec3(q, v, p);
- else if (i == 2.0) rgb = vec3(p, v, t);
- else if (i == 3.0) rgb = vec3(p, q, v);
- else if (i == 4.0) rgb = vec3(t, p, v);
- else rgb = vec3(v, p, q);
- }
-
- outcol = rgb;
-}
-
-void hue_sat(float hue, float sat, float value, inout vec3 col)
-{
- vec3 hsv;
-
- rgb_to_hsv(col, hsv);
-
- hsv.x += hue;
- hsv.x -= floor(hsv.x);
- hsv.y *= sat;
- hsv.y = clamp(hsv.y, 0.0, 1.0);
- hsv.z *= value;
- hsv.z = clamp(hsv.z, 0.0, 1.0);
-
- hsv_to_rgb(hsv, col);
-}
-#endif
-
-#ifdef USE_AO
-/* Prototype */
-void ssao_factors(
- in float depth, in vec3 normal, in vec3 position, in vec2 screenco,
- out float cavities, out float edges);
-#endif
-
-/* From http://aras-p.info/texts/CompactNormalStorage.html
- * Using Method #4: Spheremap Transform */
-vec3 normal_decode(vec2 enc)
-{
- vec2 fenc = enc * 4.0 - 2.0;
- float f = dot(fenc, fenc);
- float g = sqrt(1.0 - f / 4.0);
- vec3 n;
- n.xy = fenc*g;
- n.z = 1 - f / 2;
- return n;
-}
-
-vec3 shade(vec3 N, vec3 position, float depth, vec2 screenco)
-{
-#ifdef USE_ROTATION
- /* Rotate texture coordinates */
- vec2 rotY = vec2(-matcap_rotation.y, matcap_rotation.x);
- vec2 texco = abs(vec2(dot(N.xy, matcap_rotation), dot(N.xy, rotY)) * .49 + 0.5);
-#else
- vec2 texco = abs(N.xy * .49 + 0.5);
-#endif
- vec3 col = texture(matcaps, vec3(texco, matcap_index)).rgb;
-
-#ifdef USE_AO
- float cavity = 0.0, edges = 0.0;
- ssao_factors(depth, N, position, screenco, cavity, edges);
-
- col *= mix(vec3(1.0), matcaps_color[int(matcap_index)].rgb, cavity);
-#endif
-
-#ifdef USE_HSV
- hue_sat(matcap_hsv.x, matcap_hsv.y, matcap_hsv.z, col);
-#endif
-
-#ifdef USE_AO
- /* Apply highlights after hue shift */
- col *= edges + 1.0;
-#endif
-
- return col;
-}
-
-void main()
-{
- vec2 screenco = vec2(gl_FragCoord.xy) * invscreenres;
-
-#ifdef DEFERRED_SHADING
- ivec2 texel = ivec2(gl_FragCoord.xy);
- mat_id = texelFetch(idtex, texel, 0).r;
-
- /* early out (manual stencil test) */
- if (mat_id == 0)
- discard;
-
- float depth = texelFetch(depthtex, texel, 0).r;
- vec3 N = normal_decode(texelFetch(normaltex, texel, 0).rg);
- /* see the prepass for explanations. */
- if (mat_id < 0) {
- N = -N;
- }
- mat_id = abs(mat_id) - 1;
-#else
- float depth = gl_FragCoord.z;
- vec3 N = normal;
-#endif
-
- vec3 position = get_view_space_from_depth(screenco, depth);
-
- vec3 col = shade(N, position, depth, screenco);
-
- fragColor = vec4(col, 1.0);
-}