about summary refs log tree commit diff stats
path: root/bin/rails
diff options
context:
space:
mode:
Diffstat (limited to 'bin/rails')
0 files changed, 0 insertions, 0 deletions
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#version 330 core

in vec2 UV;
in vec3 normIn;
in vec3 camDirIn;
in vec3 lightDirIn;

out vec3 color;

uniform sampler2D rendertex;
uniform sampler2D scanlinestex;

const float Tuning_Overscan = 1.08;
const float Tuning_Dimming = 0.0;
const float Tuning_Satur = 1.13;
const float Tuning_ReflScalar = 0.3;
const float Tuning_Barrel = 0;//0.12;
const float Tuning_Scanline_Brightness = 0.45;
const float Tuning_Scanline_Opacity = 0.55;
const float Tuning_Diff_Brightness = 0.75;
const float Tuning_Spec_Brightness = 0.35;
const float Tuning_Spec_Power = 50.0;
const float Tuning_Fres_Brightness = 1.0;

uniform vec2 resolution;

vec4 sampleCRT(vec2 uv)
{
  vec2 CRTMask_Scale = vec2(320.0,200.0) / vec2(2.0, 1.0);
  
  vec2 scanuv = uv * CRTMask_Scale;
  vec3 scantex = texture(scanlinestex, scanuv).rgb;
  scantex += Tuning_Scanline_Brightness;
  scantex = mix(vec3(1,1,1), scantex, Tuning_Scanline_Opacity);
  
  vec2 overscanuv = (uv * Tuning_Overscan) - ((Tuning_Overscan - 1.0f) * 0.5f);
  overscanuv = overscanuv - vec2(0.5, 0.5);
  float rsq = (overscanuv.x*overscanuv.x) + (overscanuv.y*overscanuv.y);
  overscanuv = overscanuv + (overscanuv * (Tuning_Barrel * rsq)) + vec2(0.5,0.5);
  
  vec3 comptex = texture(rendertex, overscanuv).rgb;
  
  vec4 emissive = vec4(comptex * scantex, 1);
  float desat = dot(vec4(0.299, 0.587, 0.114, 0.0), emissive);
  emissive = mix(vec4(desat, desat, desat, 1), emissive, Tuning_Satur);
  
  return emissive;
}

void main()
{
  vec3 norm = normalize(normIn);
  vec3 camDir = normalize(camDirIn);
  vec3 lightDir = normalize(lightDirIn);
  
  float diffuse = clamp(dot(norm, lightDir), 0.0f, 1.0f);
  vec4 colordiff = vec4(0.175, 0.15, 0.2, 1) * diffuse * Tuning_Diff_Brightness;
  
  vec3 halfVec = normalize(lightDir + camDir);
  float spec = clamp(dot(norm, halfVec), 0.0f, 1.0f);
  spec = pow(spec, Tuning_Spec_Power);
  vec4 colorspec = vec4(0.25, 0.25, 0.25, 1) * spec * Tuning_Spec_Brightness;
  
  float fres = 1.0 - dot(camDir, norm);
  fres = (fres*fres) * Tuning_Fres_Brightness;
  vec4 colorfres = vec4(0.45, 0.4, 0.5, 1) * fres;
  
  vec4 emissive = sampleCRT(UV);
  
  vec4 nearfinal = colorfres + colordiff + colorspec + emissive;
  //vec4 final = nearfinal * mix(vec4(1,1,1,1), vec4(0,0,0, 0), Tuning_Dimming);
  
  color = nearfinal.rgb;
}