Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 11.11.2017, 16:14   #2
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 978
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Открываю для себя дивный мир шейдеров!

Сообщение от CRASHER Посмотреть сообщение
В частности меня интересует такой возможно глупый вопрос. Для чего сколярно делят переменные и константы.
Действительно глупый вопрос, ибо операция векторного деления в линейной алгебре не определена.

Сообщение от CRASHER Посмотреть сообщение
Стоит поменять битность, освещения нет. Ну это можно как то объяснить, но ведь число вычисляется с числами с другой битностью.
При операции с числами с плавающей запятой разной битности, числа с меньшей битностью преобразовываются до битности наибольшего операнда. Так что на вычисления в данном примере это никак не может влиять. Скорее всего накосячил где-то, например когда в шейдер данные передавал - может там тоже менять надо соответствующе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
CRASHER (11.11.2017)
Старый 11.11.2017, 18:00   #3
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Открываю для себя дивный мир шейдеров!

Samodelkin, я? нет) этож пример) я его не менял)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:01.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com