• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

"Крутизна и реализьм" - тема про шейдеры

Автор KBECT0MAH, 25 декабря 2007, 04:18:22

« назад - далее »

→|๖ۣۜDen|←

Поддерживаю тебя Brothermechanic! Где вы умы? :-\ :'(
Не тупи, Denil!ツ Quest3D v4.3.2

BROTHERMECHANIC

#61
- в mental mill открыл "demo_step_1" и сохранил в FX composer шейдер "fong.fX"
(1 текстура ENVIROMENTCUBE, остальное цвет и т.п.),
- в FX composer все работает отлично, подключил текстуру.
- Проштудировал код от и до, попутно сравнивая его с проверенным (стопудово работающим) шейдером И ПОСЛЕ КАЖДОГО ИЗМЕНЕНИЯ наблюдал что происходит в квесте (ничего не менялось, повлияла только текстура отражения)
Опять та же история. Повторюсь: как правильно подключить Источник Света (сцены квеста) к шейдеру или что еще можно сделать и изменить код, куда смотреть, где про это еще говорят, пусть на английском?

ЗЫ: Когда пробовал перевести из композера его родной phong - та же проблема со светом

Картинка
http://pic.ipicture.ru/uploads/081112/6IWqk5cGbG.jpg

Архив с шейдером и cgr

http://rapidshare.com/files/163120691/Hell_Lit_in_shader.rar.html

Den_ya

Brothermechanic
ты хотел чтобы получилось так? см.рис.blic
если да то:
шейдер работает нормально,перейди в меню Object\ выбери тот обьект к которому ты прикрепил HLSLObject,дальше откроетя настоика шейдера,там откроются те настройки(Shader properties) которые были написаны для этого шейдера. см.рис.nastroiki shadera

свет действительно не влияет на блик(так он был написан)


BROTHERMECHANIC

Повторюсь:
этот шейдер я получил в mentall mill из ихнего примера demo_step_1 (самому там че-нить замакарить просче простого, взял demo_step_1 "для чистоты эксперимента"),
переделал синематику как написано
http://support.quest3d.com/index.php?title=Quest3D_Semantics
Цитироватьсравнивая его с проверенным (стопудово работающим) шейдером
(реагирующим на свет), (вкладку properties прописал тоже я)
НО в квесте шейдер работает, да. Но не реагирует на свет.
ТКНИТЕ МЕНЯ НОСОМ В В СТРОКИ КОДА которые это исправят, пожалуйсто.

PS: В Fx Composer-e блик есть.

Den_ya

ммм...вот терь понял,о чем речь, тока я тогда в этом не советник,но вопросов я назадаю ;D ;D ;D
- я открыл пример(до этого момента я и не знал что есть примеры,просто второй раз в этой программе разбираюсь) с demo_step_1(с этого примера я наконец то понял,почему при экспорте прога запрвшивант свет к шейдеру,я до этого пытался его прикрепить к шейдеру(правда из этого ничго не получалось,а нооборот получалось шейдер к свету),оказывается этого делать и не надо анологично так и с Enviroment)наконец то получился удачный экспорт и квест его принял без проблем,но во вкладке properties пустота
-синематика - что это и для чего это нужно для шейдера
-как посматреть этот стопудово работаюший шейдер

BROTHERMECHANIC

Отлично, будем подтягивать народ к проблеме!
Шейдер (микс 2 цветов по текстуре)
http://rapidshare.com/files/164038671/ColorMIX.fx.html
Вот он реагирует на свет
За подключение "лампочки" отвечают эти строки

float3 light_pos[8]   : LIGHTPOS; 
float4 light_color[8]   : LIGHTCOLOR; , по-моему :)???

их я заменил, но все равно не работает.
Синематику квеста я прочел на странице
Цитироватьhttp://support.quest3d.com/index.php?title=Quest3D_Semantics
Это как пояснение для квеста что есть что *текстура, значение, вектор... - интерфейс настройки шейдера, грубо говоря.

Den_ya

ЦитироватьЭто как пояснение для квеста что есть что *текстура, значение, вектор... - интерфейс настройки шейдера, грубо говоря.
проще говоря "Синематика - это код который заставляет квест понимать шейдер"
сейчас разбираю этот шейдер так что проблемы или их решения напишу позже

BROTHERMECHANIC

Цитироватьразбираю этот шейдер
Видимо я его недоперевел, попробуй перевести FX Composer-ский шейдер, хоть просто "Blin".
Буду признателен любым новостям!

Den_ya

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

в начале я вообще не понимал что к чему,и так и сяк и не как в итоге ;D(это я про mental mill (TM) Artist Edition)
решил попробую что нить слепить из Shader fx и все получилось на ура,потому что Shader fx очень хорошо экспортирует код в квест , код получается оккуратный,любо дорого смотреть ;D не то что из mental mill >:( (кстати Brothermechanic шейдер ColorMIX который ты предоставил похоже из Shader fx ;) ) и возникла такая мысля, а не загрузить ли мне mental mill'кий шейдер через Shader fx,а потом в квест,только вот я обломался,Shader fx - не загружает чужеродные файлы ;D и тут у меня сразу же появился вывод что Shader fx мне больше не нужен,так как он просто тонет маленькой капелькой в огромном выборе Nvidia'ских шейдерах,теперь его можно использовать только как наглядное пособие и все(может быть только если начинающему программисту который решит писать шейдеры под квест)пока я ковырялся с Shader fx случайно или нет(непомню)
я загрузил через макс пример demo_step_1 и вопрос
Цитировать-как посматреть этот стопудово работаюший шейдер?
отпал сам собой,потому что похоже mental mill'кие .fx очень хорошо дружат с максом(кроме навороченных)см.рис.MAX и тут я увидел что у шейдера открылись настройки,я решил действовать отталкиваясь от макса и у меня получилось такие же настройки  в квесте см.рис. kvest
кроме одних это - свет , со светом мне так и не удалось справится(может кто нибуть дошарит все таки как его запустить)
я думаю что дело на самом деле обстоит очень просто - дело  в том что свет шейдера неможет прикрепиться к свету который выстовляеш в кветсе, нужно всего лиш их связать, это может быть всего одна строчка и все,только я не програмист к сожалению и все делаю отталкиваясь от логики или интуиции,а пророй методом тыка

я нашол одну мне непонятную строчку которая не на что не реагирует ни на CHANNELVECTOR0,CHANNELVALUE0,LIGHTPOS да и вобще я перебрал все варианты которые написанны в сениматики квеста результат ноль см.№ 7 рисунка kod , я думаю наверно это и есть та строка которая связывает свет.

выводы по коду:
- в строках
Цитироватьfloat4 __light0_color : CHANNELVECTOR0
<
   string UIName = "Light0 Color";
   string UIWidget = "Color";
> = float4(1.000000f, 1.000000f, 1.000000f, 1.000000f);
ставим вектор канала - CHANNELVECTOR0
- в строках
Цитироватьfloat __light0_intensity : CHANNELVALUE0
<
   string UIName = "Light0 Intensity";
   float UIMin = 0.000000;
   float UIMax = 10.000000;
   float UIStep = 0.01;
   string UIWidget = "slider";
> = 1.000000;
ставим значение канала - CHANNELVALUE0
- в строках
Цитироватьtexture __Environment_map_cubic_1_env_tex : TEXTURE0
<
   string UIName = "Environment_map_cubic_1_env_tex";
   string ResourceName = "default_reflection_cubic.dds";
   string ResourceType = "Cube";
>;

samplerCUBE Environment_map_cubic_1_env_tex = sampler_state {
   Texture = <__Environment_map_cubic_1_env_tex>;
   MinFilter = Linear;
   MagFilter = Linear;
   MipFilter = Linear;
   AddressU = Clamp;
   AddressV = Clamp;
   AddressW = Clamp;
};
ставим в звависимости от шейдера TEXTURE0 или ENVIRONMENTCUBE
вот файл с моей сценой

BROTHERMECHANIC

#69
ЦитироватьColorMIX который ты предоставил
Ну схитрил немного, просто я тоже считаю SFX отстоем, и я не работаю в максе, и хочется разобрать Mentall Mill, его немцы сделали на славу (ты видел там ноду с паралаксом?).

Ты проделал в точности что и я (только я переводил MM->FXC->Q3D), да UI одинаковый везде (незря же он I:)
Вопрос про реакцию на свет открыт. Это определенно
Цитироватьfloat3 light_pos[8]   : LIGHTPOS; 
float3 light_color[8]   : LIGHTCOLOR;
(думаю float4[8] = float3)
Похоже на то что еще есть стороки, влияющие на свет,
и еще щас пришла мысль, если получится - напишу.
ЗЫ: А в максе реагирует на свет?

Den_ya

#70
ЦитироватьЗЫ: А в максе реагирует на свет?
да, в максе свет работает отлично
Цитировать(ты видел там ноду с паралаксом?).
видел,а в чем вопрос?

Den_ya

#71
вот нашол урок ,похоже я был прав насчет привязки света,только у меня не получается все равно
ковыряться нужно со строкой
Цитироватьfloat3 __light0_position : Position
<
   string Object = "PointLight0";
   string Space = "View";
   string UIName = "Light0 Light_position";
> = float3(0.000000, 0.000000, 0.000000);

string Object - это название нашего света,я скопировал PointLight0 и переименовал свет,но ничего ниполучилось , я ставил float3 __light0_position : POSITION - LIGHTPOS  и ничего
я только не понял что такое string Space вроде бы все понятно но ведь там может быть любое название?
а вот это я вообще не понял string UIName

BROTHERMECHANIC

Эти строки, типа, - координаты виртуального ИС, как я понимаю.
Урок хороший. Сделал по нему шейдер еще неделю назад, сейчас опять протестировал - реакции не РЕАЛЬНЫЙ ИС нет :((((((((( ??? ??? ???
И, главное в FXCjmposer-е все ок >:( а вот в квесте - нет.
Почему коды из Mentall Mill содержат инфу
float4 __light0_Light_point_1_color
<
string UIName = "Light0 Color";
string UIWidget = "Color";
> = float4(1.000000, 1.000000, 1.000000, 1.000000);
float __light0_Light_point_1_intensity
<
string UIName = "Light0 Intensity";
float UIMin = 0.000000;
float UIMax = 10.000000;
float UIStep = 0.01;
string UIWidget = "slider";
> = 1.319800;
float __light0_Light_point_1_distance_falloff_exponent
<
string UIName = "Light0 Distance Falloff Exponent";
float UIMin = 0.000000;
float UIMax = 4.000000;
float UIStep = 0.01;
string UIWidget = "slider";
> = 1.000000;
float __light0_Light_point_1_distance_falloff_start
<
string UIName = "Light0 Distance Falloff Start";
float UIMin = 0.000000;
float UIMax = 10.000000;
float UIStep = 0.01;
string UIWidget = "slider";
> = 0.000000;
float __light0_Light_point_1_distance_falloff_limit
<
string UIName = "Light0 Distance Falloff Limit";
float UIMin = 0.000000;
float UIMax = 1000.000000;
float UIStep = 0.01;
string UIWidget = "slider";
> = 1000.000000;
float __light0_Light_point_1_distance_scale
<
string UIName = "Light0 Distance Scale";
float UIMin = 0.001000;
float UIMax = 100.000000;
float UIStep = 0.01;
string UIWidget = "slider";
> = 1.000000;
float3 __light0_position : Position
<
string Object = "PointLight0";
string Space = "World";
string UIName = "Light0 Light_position";
> = float3(0.000000, 0.000000, 0.000000);

А SFX только
float3 light_pos[8] : LIGHTPOS;

float4 light_color[8] : LIGHTCOLOR;

??? ??? ??? ??? ???
И к HLSLObject с шейдерами от SFX раньше я и не задумывался подключать свет, потому что и так отлично РАБОТАЛО.
Что делать, люди?

Еще: Походу если у шейдера запрограмирован только цвет, то работает свет на нем или нет мохно увидеть не переделывая синематику, так что даже не знаю, в ней ли дело?

Den_ya

уф, у меня скоро голова взорвется :-\ что я только не пробывал не хочет этот свет привязываться и все тут
ЦитироватьИ, главное в FXCjmposer-е все ок Злой а вот в квесте - нет.
- дело в том что (я так понимаю) Mentall Mill был создан под FX Composer и поэтому синематика сделана в соответствии под FX Composer,хотя может быть есть еще какие то стандарты раз Макс открывает шейдер без проблем,и получется что квест имеет свою собственную синематику не поподающюю под эти стандарты (для чего это сделали я не понимаю),а вот ребята из Shader FX как раз постарались и зделали экспортер кода под квест (сделали его простым и удобным,причем не поленились и даже расписали где что находится)
вот это я если чесно не очень понял -
ЦитироватьЕще: Походу если у шейдера запрограмирован только цвет, то работает свет на нем или нет мохно увидеть не переделывая синематику, так что даже не знаю, в ней ли дело?
наверное имелось в виду, что при создании света в сцене,он не как не реагирует,как будто его нет, тоесть свет в шейдере видно,есть ли квестовски свет или его нет - картина одна и та же.
поэтому вижу только два выхода:
1. - искать человека понимающего в програмировании и знании "в линейной алгебре, хотя бы на уровне работы с матрицами и векторами"
2. - шерстить весь оф форум,в надежде что попадется похожий щейдер с таким же кодом (ищу но пока не нашол)
и еще проблема и которая возникнет еще и еще,дело в том что код, у каждого шейдера свой!поэтому сравнивать код FX Composer-ра и Shader FX-бессмысленно(если только есть похожие строки)
оба варианта не подарок, но второй реальнее
и еще,тут у меня мысля возникла пока я ковырялся с этим шейдером, почему нам даются настройки света,а не материала????? получается нужно разбираться еще с самим Mentall Mill-лом так как экспорт дело тонкое и может быть где нибуть мы делаем не то

Den_ya

#74
вот нашол(правдо я где то уже видел но про это забыл)
немало шейдеров от Shader FX
shaderfx-01.exe
shaderfx-2-q3d.rar
но все таки хотелось бы разобраться с Mentall Mill