Это такой высокоуровневый шейдерный язык, который будет встроен в DirectX 9 и работать на всех современных картах.
Всё хорошо, если бы не одно но:
http://www.cgchannel.com/news/2002_6/cg/images/code.jpg
Уроды. Мало того, что с ошибкой (если это ошибка), так ещё и специально код SL перепоганили. Переписываем:
color cSpec = phong(Nf, V, phongExp);
Ci = Oi * (FinalColor+DiffuseColor * (AmbientLight+DiffuseLight)) + SpecularColor*cSpec;
А перепишем так:
Ci = Oi * (cFinal+cDiffuse * (lAmbient+lDiffuse)) + cSpecular*phong(Nf, V, phongExp);
Ну и у кого понятнее? Даже не смотря на мою венгерскую нотацию, которой я стараюсь избегать ;-)
В ШейдерМене этот шейдер (Фонг) вообще выглядит вот так:
normal Nf = faceforward(normalize(N), I);
vector V = -normalize(I);
Ci = diffusecolor * (ambientcolor * Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * phong(Nf, V, 1/roughness);
Понятнее не придумаешь.
И нахрена им плодить новые шейдерные языки?
Всё хорошо, если бы не одно но:
http://www.cgchannel.com/news/2002_6/cg/images/code.jpg
Уроды. Мало того, что с ошибкой (если это ошибка), так ещё и специально код SL перепоганили. Переписываем:
color cSpec = phong(Nf, V, phongExp);
Ci = Oi * (FinalColor+DiffuseColor * (AmbientLight+DiffuseLight)) + SpecularColor*cSpec;
А перепишем так:
Ci = Oi * (cFinal+cDiffuse * (lAmbient+lDiffuse)) + cSpecular*phong(Nf, V, phongExp);
Ну и у кого понятнее? Даже не смотря на мою венгерскую нотацию, которой я стараюсь избегать ;-)
В ШейдерМене этот шейдер (Фонг) вообще выглядит вот так:
normal Nf = faceforward(normalize(N), I);
vector V = -normalize(I);
Ci = diffusecolor * (ambientcolor * Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * phong(Nf, V, 1/roughness);
Понятнее не придумаешь.
И нахрена им плодить новые шейдерные языки?