Pixel-Composer/build/Windows/0/cache/sh_d3d_grid_view.shader

69 lines
2 KiB
GLSL

attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
varying float v_distanceToCamera;
varying vec3 v_worldPosition;
void main() {
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_worldPosition = (gm_Matrices[MATRIX_WORLD] * vec4(in_Position, 1.)).xyz;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
vec4 worldView = gm_Matrices[MATRIX_WORLD_VIEW] * object_space_pos;
v_distanceToCamera = length(worldView.xyz);
}
//######################_==_YOYO_SHADER_MARKER_==_######################@~
#ifdef _YY_HLSL11_
#extension GL_OES_standard_derivatives : enable
#endif
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
varying float v_distanceToCamera;
varying vec3 v_worldPosition;
uniform float scale;
uniform vec2 shift;
uniform float axisBlend;
vec4 grid(vec2 pos, float scale) {
#ifdef MACOS
vec4 color = vec4(0.);
#else
vec2 coord = pos * scale; // use the scale variable to set the distance between the lines
vec2 derivative = fwidth(coord);
vec2 grid = abs(fract(coord - 0.5) - 0.5) / derivative;
float line = min(grid.x, grid.y);
float minimumy = min(derivative.y, 1.);
float minimumx = min(derivative.x, 1.);
vec4 color = vec4(.3, .3, .3, 1. - min(line, 1.));
// y axis
if(pos.x > -1. * minimumx / scale && pos.x < 1. * minimumx / scale)
color.y = 0.3 + axisBlend * 0.7;
// x axis
if(pos.y > -1. * minimumy / scale && pos.y < 1. * minimumy / scale)
color.x = 0.3 + axisBlend * 0.7;
#endif
return color;
}
void main() {
gl_FragColor = grid( v_vTexcoord - 0.5 + shift, scale );
gl_FragColor.a *= 1. - length(v_vTexcoord - 0.5) * 2.;
}