Beispiel #1
0
 public F FS(V2F v)
 {
     return(new F()
     {
         Color = Tex.Value(v.UV)
     });
 }
Beispiel #2
0
    public F FS(V2F v)
    {
        F o = new F();

        foreach (PointLight item in Lighting.PointLights)
        {
            Vector3 i    = item.Position - v.WorldPosition;
            Vector3 re   = Vector3.Normalize(ShaderMath.GetReflection(i, v.Normal));
            Vector3 view = Vector3.Normalize(Matrixs.CameraPosition - v.WorldPosition);
            Vector3 h    = Vector3.Normalize(view + i);

            //Phong
            //o.Color += ShaderMath.ColorMul(item.Color, Spscular) * MathF.Pow(ShaderMath.Max(0, Vector3.Dot(re, view)), Gloss);

            //Blinn-Phong
            o.Color += ShaderMath.ColorMul(item.Color, Spscular) * MathF.Pow(ShaderMath.Max(0, Vector3.Dot(v.Normal, h)), Gloss);

            //Diffuse
            o.Color += item.Color * Diffuse * ShaderMath.Max(0, Vector3.Dot(v.Normal, i));
        }
        o.Color += Lighting.AmbientColor;
        return(o);
    }