22 Сентября 2024, 12:38:33
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Визуализация, Шейдеры > "Крутизна и реализьм" - тема про шейдеры
"Крутизна и реализьм" - тема про шейдеры
(Прочитано 141892 раз)
  1 ... 4 5 [6] 7 8 ... 11
Печать
BROTHERMECHANIC | ** | Пользователь | Сообщений: 62 | «Ответ #75 20 Ноября 2008, 18:21:44 »
Re: "Крутизна и реализьм" - тема про шейдеры |
75
искать человека понимающего в програмировании

Я уверен, на форуме есть такие, просто еще видимо не увидели нашу тему. Подмигивающий

Mental Mill надо подчинить!
TOXin | Гость |
Re: "Крутизна и реализьм" - тема про шейдеры |
76
Скажите, пожалста, у всех нормально работает ShaderFX 2.09 на 3dsMax 2009 SP1, или тока у меня какие-то глюки с UV координатами?
Den_ya | **** | Старожил | Сообщений: 360 | «Ответ #77 22 Ноября 2008, 21:10:13 »
Re: "Крутизна и реализьм" - тема про шейдеры |
77
не могу сказать  В замешательстве у меня 3ds Max 9 SP2
BROTHERMECHANIC | ** | Пользователь | Сообщений: 62 | «Ответ #78 24 Ноября 2008, 17:46:50 »
Re: "Крутизна и реализьм" - тема про шейдеры |
78
Den_ya, any news?
Den_ya | **** | Старожил | Сообщений: 360 | «Ответ #79 24 Ноября 2008, 20:56:53 »
Re: "Крутизна и реализьм" - тема про шейдеры |
79
пока что нет новостей В замешательстве,я решил отдохнуть пока от этого дела,а то я человек такой если начинаю ковырятся то уже не остановиться,а у меня еще дел по горло(много нужно еще смоделировать и самое занудное сделать раскладку UVW),нужно малехо мозги остудить,и тем более "хорошая мысля,приходит опосля"
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #80 26 Ноября 2008, 09:03:13 »
Re: "Крутизна и реализьм" - тема про шейдеры |
80
>>не хочет этот свет привязываться и все тут

Шейдер не знает источников света как таковые, ему важен вектора их позиций в мире, на основе чего он считает освещение.
Есть два способа транслировать вектора позиции ИС
1. У HLSL группы есть входы для значений, векторов и матриц, в шейдере можно их подключать кодом,
для векторов это:
float3 "Имя_переменной" :CHANNELVECTOR0;
Т.е. если прилинковать вектор позиции ИС к первому входу(для CHANNELVECTOR0) для векторов, а потом использовать при расчётах, то должно работать.

2.Второй способ более простой и шейдер реагирует автоматом на подключенные ИС в сцене.
объявляем:

#define MAX_LIGHTCOUNT 8

float4 lightPos[MAX_LIGHTCOUNT] : LIGHTPOS; // вектора позиций
float4 lightColor[MAX_LIGHTCOUNT] :LIGHTCOLOR; // вектора цвета.

Далее в коде вертексного шейдера...

float3 Позиция_Первого_ИС = float3(lightPos[0].x,lightPos[0].y,lightPos[0].z);
float3 Позиция_Второго_ИС = float3(lightPos[1].x,lightPos[1].y,lightPos[1].z);
float3 Позиция_Третьего_ИС = float3(lightPos[2].x,lightPos[2].y,lightPos[2].z);
и т.д. до [7] (ограничение - 8 штук).

так же с цветом:
float3 Цвет_Первого_ИС = float3(lightColor[0].x,lightPos[0].y,lightPos[0].z);
float3 Цвет_Второго_ИС = float3(lightColor[1].x,lightPos[1].y,lightPos[1].z);
float3 Цвет_Третьего_ИС = float3(lightColor[2].x,lightPos[2].y,lightPos[2].z);
соответственно...

Если ИС в сцене, например один, а шейдер работает с 4, то вектора позиции и цвета, несуществующих ИС, будут возвращать нули...
Den_ya | **** | Старожил | Сообщений: 360 | «Ответ #81 27 Ноября 2008, 00:17:46 »
Re: "Крутизна и реализьм" - тема про шейдеры |
81
не все так просто под луной Подмигивающий Веселый Веселый Веселый
Цитировать
float3 "Имя_переменной" :CHANNELVECTOR0;
я ставил CHANNELVECTOR0 - свет действительно куда то убегает только не привязывается,
дело в том что код
Цитировать
#define MAX_LIGHTCOUNT 8

float4 lightPos[MAX_LIGHTCOUNT] : LIGHTPOS; // вектора позиций
float4 lightColor[MAX_LIGHTCOUNT] :LIGHTCOLOR; // вектора цвета.

Далее в коде вертексного шейдера...

float3 Позиция_Первого_ИС = float3(lightPos[0].x,lightPos[0].y,lightPos[0].z);
float3 Позиция_Второго_ИС = float3(lightPos[1].x,lightPos[1].y,lightPos[1].z);
float3 Позиция_Третьего_ИС = float3(lightPos[2].x,lightPos[2].y,lightPos[2].z);
и т.д. до [7] (ограничение - 8 штук).

так же с цветом:
float3 Цвет_Первого_ИС = float3(lightColor[0].x,lightPos[0].y,lightPos[0].z);
float3 Цвет_Второго_ИС = float3(lightColor[1].x,lightPos[1].y,lightPos[1].z);
float3 Цвет_Третьего_ИС = float3(lightColor[2].x,lightPos[2].y,lightPos[2].z);
соответственно...
совершенно не такой, который делает Mentall Mill
у него например: LIGHTPOS; // вектора позиций - это float3
а :LIGHTCOLOR; // вектора цвета - это уже float4 , и в Mentall Mill-ком коде вообще не воспринимаются квадратные скобки -[0]- - сразу же пишется ошибка
замена string Space = "View" на string Space = "World" тоже результатов не дало
вообщем вот готовая сценка 6.35 Мб,может быть получится разобраться

и еще вопрос:
- нужно ли выставлять точки координат света квеста и света шейдера например свет квеста например  на 0,0,0 и свет шейдера на 0,0,0 или все должно зацепится автоматом?
« Последнее редактирование: 27 Ноября 2008, 00:54:56 от Den_ya »
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #82 27 Ноября 2008, 03:32:21 »
Re: "Крутизна и реализьм" - тема про шейдеры |
82
Цитировать
не все так просто под луной
Да, если не внимательно читать - я привел уже готовое, рабочее решение.

Цитировать
я ставил CHANNELVECTOR0 - свет действительно куда то убегает только не привязывается

Ответ:
Цитировать
Если прилинковать вектор позиции ИС к первому входу(для CHANNELVECTOR0)...
канала HLSL Object...
Смотри, что прилинковано hlsl-каналу. Если первый линк для векторов занят, надо использовать другие CHANNELVECTOR1, CHANNELVECTOR2 и т.д.

Цитировать
совершенно не такой, который делает Mentall Mill
Какя разница, что делает Mentall Mill? Я, так понимаю, надо, что бы в квесте работало!?!

Цитировать
- нужно ли выставлять точки координат света квеста и света шейдера например свет квеста например  на 0,0,0 и свет шейдера на 0,0,0 или все должно зацепится автоматом?

Ответ:
Цитировать
Если ИС в сцене, например один, а шейдер работает с 4, то вектора позиции и цвета, несуществующих ИС, будут возвращать нули...
Т.е. позиция в мире - 0.0.0, и цвет 0.0.0.0(чёрный).
Если ИС существует(Т.е. прилинкованные ИС кканалу Render), то автоматом берется его позиция и цвет.
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #83 27 Ноября 2008, 08:15:32 »
Re: "Крутизна и реализьм" - тема про шейдеры |
83
To Den_ya.

Посмотрел сцену с чайником... В общем простой шейдер с кубомапным отражением - преломлением + цвет + блик. Поддерживается всего один ИС. Но его текст плохо воспринимаем и его(текст) можно было бы сократить раза в 4, хотя бы для улучшения восприятия. Улыбающийся

Проблема не в линковании позиции и т.д., а в расчетах внутри шейдера. Копай в нём. Видимо в программе генерации ,что то отличается от квестового - вот и глючит.

Могу привести пример - Шейдер написаный под 3ДМАХ в квесте даже после правки симантик будет глючить, т.к. в максе оси X и Y в отличии от квеста перевёрнуты и что бы всё работало надо учитывать, что в максе
worldNorm.xYZ = worldNorm.xZY...

Удачи.
BROTHERMECHANIC | ** | Пользователь | Сообщений: 62 | «Ответ #84 27 Ноября 2008, 19:00:25 »
Re: "Крутизна и реализьм" - тема про шейдеры |
84
dfx, СПАСИБО ЗА ПОМОЩЬ!!!
По второму способу никак не получается, выходят ошибки
http://picthost.ru/images/edwz1e2zjgqsl5ui8bnc.jpg
вот архив с искаверканным мною шейдером
http://rapidshare.com/files/167934458/No_lit_SHADER.rar.html

По первому - все путем!!!!!!!!!!!!!!!!!!!!!!!!
http://picthost.ru/images/g0tz41eurlpzps48gb.jpg
(непонял только что подключать на fallof exponent и т.д., но это мелочи)
И еще; непеределывая синематики шейдер реагирует на "виртуальный" источник в ценре мира
http://picthost.ru/images/xzetey6svp97wuwscvu.jpg

Помогите, всетаки разобраться со вторым способом (да мне неимется, но уже чувствую что решение близко).

ps: Если сможешь, переделай пожалуйсто этот шейдер и выдели измененные строки, буду очень признателен.
« Последнее редактирование: 27 Ноября 2008, 19:11:27 от Brothermechanic »
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #85 30 Ноября 2008, 00:32:55 »
Re: "Крутизна и реализьм" - тема про шейдеры |
85
В отличии от Квеста, МенталМил игнорирует мировую матрицу
То есть, если Квест преобразовывает вершину в пространство
отсечения mul(vertex,WorldViewProjection) то ментал делает это так mul(vertex,ViewProjection), ну и все последствия из этого выходящие. В ментале камера является центром мира, и когда мы "бегаем" все обекты вертятся около камеры, а сама камера неподвижна:))). Вот поэтому и непонятки ваши со светом,
он ведь передается в шейдер квестом в мировой системе координат.   

&Brothermechanic
Напиши что ты конкретно хочеш от шейдера, техническое задание.
Может в моем архивчике найдеться подходящий;)
Den_ya | **** | Старожил | Сообщений: 360 | «Ответ #86 30 Ноября 2008, 01:48:20 »
Re: "Крутизна и реализьм" - тема про шейдеры |
86
Const_47
если чесно то это не ответ
мы с Brothermechanic две страници накатали здесь про пример из Mentall Mill-ла про простенький пример demo_step_1
,разобрались в настройках кроме света,дело не в том что он нужен,а в том как одоптировать шейдеры которые можно слепить в Mentall Mill,да да же не надо ничего придумывать,хотябы сделать та чтобы шейдеры из библиотеки NVIDIA работали в Квесте
так кто нить может сделать чтобы свет в demo_step_1 стал работать или нет,или хотябы сказать что это сделать нельзя чтобы время зря не тратить
BROTHERMECHANIC | ** | Пользователь | Сообщений: 62 | «Ответ #87 30 Ноября 2008, 12:27:36 »
Re: "Крутизна и реализьм" - тема про шейдеры |
87
Привет всем.
По первому способу DFX-а шейдер из милла РЕАГИРУЕТ на ИС. Но это как-то "неудобно" (подключать к каждому обьекту линки всех значений ИС), даже в стремном SFX есть "автоопределение" ИС Улыбающийся

Const_47, спасибо за отклик!!!!!
Дело в том что хочется самому лепить шейдеры, это дает большее пространство для творчества, да и часто нужен специфический (Н:миксованный) эффект.
Опыта пока мало и как применить твою подсказку я незнаю, но замечал разницу вматрицах SFX и MM шейдеров но не придавал значения, наверно это как-то связанно.

SFX

float4x4 wvp : WorldViewProjection < string UIWidget = "None"; >; 
float4x4 worldI : WorldInverse < string UIWidget = "None"; >; 

float4x4 worldIT : WorldInverseTranspose < string UIWidget = "None"; >; 

float4x4 viewInv : ViewInverse < string UIWidget = "None"; >; 
float4x4 world : World < string UIWidget = "None"; >;

MM

float4x4 __object_to_ndc : WorldViewProjection<   string UIWidget = "none";>;
float4x4 __world_to_object : WorldInverse<   string UIWidget = "none";>;
float4x4 __object_to_world : World<   string UIWidget = "none";>;
float4x4 __camera_to_world : ViewInverse<   string UIWidget = "none";>;

float4 __scene_ambient : Ambient
<
   string UIName = "Scene Ambient";
   string UIWidget = "color";
> = float4(0.00,0.00,0.00,0.00);


Если как-то добавить в код мила 

float4x4 worldIT : WorldInverseTranspose < string UIWidget = "None"; >;

тогда блик заработает?

И..., если нетрудно, посмотри этот шейдер, что там надо изменить?
http://rapidshare.com/files/167934458/No_lit_SHADER.rar.html
« Последнее редактирование: 30 Ноября 2008, 12:40:04 от Brothermechanic »
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #88 01 Декабря 2008, 00:47:36 »
Re: "Крутизна и реализьм" - тема про шейдеры |
88
Парни, в теме по Адаптации шейдеров
http://guest3d.wohlnet.ru/forum/index.php?topic=426.0
Я выложил пример адаптации шейдеров NVIDIA, и будет это
для вас просто, или нет зависит только от вашего уровня подготовки. На следующий раз, я напишу о адаптации шейдеров MM, пусть на примере demo_step_1. Я не хочу говорить, что это будет завтра, или после завтра. У меня сейчас такая ситуация, что работать приходится по 12 часов в сутки, или около того.
Я надеюсь что материал появится через несколько дней.

&Brothermechanic
Вот я смотрю на ту матрицу которую ты привел от MM
float4x4 __object_to_ndc : WorldViewProjection ;
и думаю что мое утверждение выше ошибочно,наверное спутал с RenderMonky

Я посмотрю на твой шейдер.
Den_ya | **** | Старожил | Сообщений: 360 | «Ответ #89 01 Декабря 2008, 01:05:14 »
Re: "Крутизна и реализьм" - тема про шейдеры |
89
Const_47
спасибо большое!буду разбираться
 
  1 ... 4 5 [6] 7 8 ... 11
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Визуализация, Шейдеры > "Крутизна и реализьм" - тема про шейдеры
Перейти в: