Array ( )
Вход:




Главная | OpenGL | GLSL | AI | Сеть | Примеры | Библиотека

GLSL: Освещение






В OpenGL есть три типа источников света: направленный, точечный и "прожекторный". Ы
этом уроке мы будем работать с направленным светом. Сначала мы рассмотрим способ, позволяющий
в GLSL скопировать способ освещения OpenGL.

Мы создадим шейдер, со временем переходящий от ambient-света к specular.

Ambient Ambient + Diffuse Specular

Далее для получения лучших результатов перейдем к попикселному освещению:


Далее применим попикселное точечное и прожекторное освещение. Эти последние уроки будут основаны на
уроке направленного света, так как основной код останется без изменений.



Point Light Spot Light


Как говорилось в уроках toon-шейдеров, GLSL имеет доступ к параметрам освещения OpenGL. Эти данные описывают
как индивидуальные параметры источников, так и глобальные параметры освещения.

struct gl_LightSourceParameters {
vec4 ambient;
vec4 diffuse;
vec4 specular;
vec4 position;
vec4 halfVector;
vec3 spotDirection;
float spotExponent;
float spotCutoff; // (range: [0.0,90.0], 180.0)
float spotCosCutoff; // (range: [1.0,0.0],-1.0)
float constantAttenuation;
float linearAttenuation;
float quadraticAttenuation;
};

uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];

struct gl_LightModelParameters {
vec4 ambient;
};

uniform gl_LightModelParameters gl_LightModel;


Свойства материалов также доступны в GLSL:

struct gl_MaterialParameters {
vec4 emission;
vec4 ambient;
vec4 diffuse;
vec4 specular;
float shininess;
};

uniform gl_MaterialParameters gl_FrontMaterial;
uniform gl_MaterialParameters gl_BackMaterial;

Большинство этих параметров по названиям понятны и аналогичны тем, что используются для описания
освещения и материалов в OpenGL. Мы будем их использовать для программирования направленного света.









Комментарии:

Войдите, чтобы оставить комментарий:












Яндекс.Метрика
 Яндекс цитирования.