public F FS(V2F v) { return(new F() { Color = Tex.Value(v.UV) }); }
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); }