Показать сообщение отдельно
Старый 09.11.2017, 21:13   #1
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Открываю для себя дивный мир шейдеров!

Здравствуйте, Господа и Господины 3д графики и годно кодного иллюзионизма!)) Я вот начал понимать наконец как работает шойдеры!) Но вот моменты которые никак не могу для себя уяснить хотел бы спросить. В частности меня интересует такой возможно глупый вопрос. Для чего сколярно делят переменные и константы. Я имею в виду float,Int,double,half итд. Я знаю что они с точкой без целое не целое и что количество бит которое они содержат разное, но почему к примеру в шейдере записывают некое число как half? почему через float не записать? Я знаю, возможно это глупый вопрос, видимо я чего то не понимаю. И если к примеру взять пример с шейдером из набора примеров к Хорс, то можно увидеть как используется константа с такой битностью.

const float4x4 MatWorldViewProj;
const float4x4 MatWorld;

// Light
const float3 AmbientClr;		// Ambient Color
const float3 LightClr;			// Light Color
const half LightInt;			// Light Intensity

// Positions
float3 PosLight;				// Light Position
float RngLight;					// Light Range
float DotLight;					// Light Soft

// Other
static float3 Color;
static float4 cD;
static float3 cN;

static float3 nLight;
объявили

а теперь

Color		= cD.rgb*AmbientClr+(cD*nLight*LightClr*LightInt);
применили.

Стоит поменять битность, освещения нет. Ну это можно как то объяснить, но ведь число вычисляется с числами с другой битностью.

Этот пример называется Bump Light.На тот случай если у кого он есть в запасниках и может посмотреть.
(Offline)
 
Ответить с цитированием