HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Моделирование > Обсуждение форматов моделей
Предварительный, промежуточный, главный
Страницы (8): « Первая ... « 3 4 5 6 [7] 8 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32749
Нанёс повреждений: 392 ед.

Рейтинг



Crystallize технически для пользователя ничего не меняется, но свобода действий гораздо шире. Как и должно быть в норме.

Добавлено 25-03-2024 в 23:59:

Попытаюсь на примере объяснить разницу. Как устроены материалы во всех движках?
Есть некий фиксированный набор параметров, который вы можете указать материале. Строго определённые имена этих параметров, либо вообще бинарная структура. Иногда вы можете так же определить фиксированный набор пользовательских параметров с идиотскими именами, типа UserParam1, UserParam2. Дальше всё это парсится внутри движка и перенаправляется в шейдер, где подключается к точно таким же фиксированным именам юниформов. Т.е. движок по сути занимается каким-то копированием данных с жестко определёнными входными и выходными именами. Всё это берёт начало со времён Quake3, когда программируемого конвейера ещё не было. Т.е. исторически сложилось, да так и осталось.
Хотя смысла в этом никакого.
В Ксаше материалы устроены иначе. Вы объявляете переменную - и она автоматически превращается в юниформ. Или текстурный юнит. И вы назначаете этой переменной текстуру или источник данных. Согласно объявленному типу данных. Это может константное значение, выражение, какие-то данные из недр движка (вы сами выбираете, какие именно).
И всё это автоматически направляется в ваш шейдер. Движок об этом ничего не знает и занимается переброской абстрактных данных. Таким образом возможность написать любой шейдер больше не ограничена фиксированным набором входных данных, которые описывает материал.
Теперь в шейдер можно передавать любые данные. И всё это описано прямо в материале.
Тут легко догадаться, что подобное описание материала будет сильно напоминать уже полноценный язык программирования, а не лаконичный набор параметров. То есть это как минимум неудобно для художников.
И тут в дело вступает вторая подсистема - автозамена с перегрузкой.
Которая позволяет передавать произвольный набор параметров и оформлять макросы и как набор слов и как набор с фиксированными параметрами. Т.е. технически вы сперва формируете конвейер с произвольными эффектами - именно такими, какие нужны для вашей игры. А потом прячете все настройки под макросы и вместо кучи кода пишете одно-два ключевых слова, как будто работаете с классической системой материалов из конца 90-х.
Мощность системы тестировалась на возможности описать на ней шейдерный язык из Quake3, Doom 3. Так вот - моя система материалов позволяет без вмешательства в движок полностью реализовать шейдеры из Quake 3, чисто на макросах и автозаменах. И это будет полностью корректно работать, 1 в 1, как и в самой Quake3. К тому же есть возможность выполнять условия для оптимизации прямо по ходу чтения этих материалов. Я вам выложу имплементацию для Quake3 в очередной бета-версии. Помнится я однажды уже выкладывал, но тогда никто не понял что это такое. Да и сейчас я вижу доходит с величайшим трудом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 220552

Старое сообщение 25-03-2024 20:59
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4643
Возраст: 35

Рейтинг



Цитата:
Дядя Миша писал:
Так вот - моя система материалов позволяет без вмешательства в движок полностью реализовать шейдеры из Quake 3, чисто на макросах и автозаменах

И порталы тоже?

Сообщить модератору | | IP: Записан
Сообщение: 220555

Старое сообщение 26-03-2024 01:23
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13354
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Попытаюсь на примере объяснить разницу. Как устроены материалы во всех движках?
Есть некий фиксированный набор параметров, который вы можете указать материале. Строго определённые имена этих параметров, либо вообще бинарная структура. Иногда вы можете так же определить фиксированный набор пользовательских параметров с идиотскими именами, типа UserParam1, UserParam2. Дальше всё это парсится внутри движка и перенаправляется в шейдер, где подключается к точно таким же фиксированным именам юниформов. Т.е. движок по сути занимается каким-то копированием данных с жестко определёнными входными и выходными именами. Всё это берёт начало со времён Quake3, когда программируемого конвейера ещё не было. Т.е. исторически сложилось, да так и осталось.
Хотя смысла в этом никакого.
В Ксаше материалы устроены иначе. Вы объявляете переменную - и она автоматически превращается в юниформ. Или текстурный юнит. И вы назначаете этой переменной текстуру или источник данных. Согласно объявленному типу данных. Это может константное значение, выражение, какие-то данные из недр движка (вы сами выбираете, какие именно).
И всё это автоматически направляется в ваш шейдер. Движок об этом ничего не знает и занимается переброской абстрактных данных. Таким образом возможность написать любой шейдер больше не ограничена фиксированным набором входных данных, которые описывает материал.



Так в Юнити материал тоже составляется согласно юниформам шейдера. Прикол в том что хоть в первом дууме, хоть в третьей кваке, хоть в сорсе, хоть в кризисе, хоть в ведьмаке альбедо остаётся альбедо, а карта нормалей картой нормалей, независимо от материала, и вообще наличия материал системы как таковой. Дерево будет оставаться деревом не зависимо от движка и игры. А потом уже пользователь пишет кастомный шейдер и делает с этим набором любую дичь.

Цитата:
Дядя Миша писал:
Мощность системы тестировалась на возможности описать на ней шейдерный язык из Quake3, Doom 3. Так вот - моя система материалов позволяет без вмешательства в движок полностью реализовать шейдеры из Quake 3, чисто на макросах и автозаменах. И это будет полностью корректно работать, 1 в 1, как и в самой Quake3. К тому же есть возможность выполнять условия для оптимизации прямо по ходу чтения этих материалов. Я вам выложу имплементацию для Quake3 в очередной бета-версии. Помнится я однажды уже выкладывал, но тогда никто не понял что это такое. Да и сейчас я вижу доходит с величайшим трудом.


Так, а как это влияет на поля с текстурами? Скажем Diffuse = "kek.png", Albedo("kek.png), Texture2d = "kek.png" это совершенно разные по концепции вещи? Ты же сам говоришь что система гибкая, так почему нельзя использовать какой то общий совместимый базовый шаблон? А там пускай пользователь конвертирует в материалы третьей кваки если ему надо.

Отредактировано FiEctro 26-03-2024 в 06:07

Сообщить модератору | | IP: Записан
Сообщение: 220556

Старое сообщение 26-03-2024 05:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32749
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Crystallize писал:
И порталы тоже?

Зеркал, порталов пока нет, но в перспективе да и это тоже заработает.
Но конечно порталу надо будет камеру указать.

Цитата:
FiEctro писал:
Ты же сам говоришь что система гибкая, так почему нельзя использовать какой то общий совместимый базовый шаблон?

Ну вот и интерпретируйте имя материала как путь к текстуре. Это единственное что можно гарантировать в стороннем редакторе.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 220557

Старое сообщение 26-03-2024 07:29
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13354
Возраст: 33

Рейтинг



Ну понятно, опять всё вручную прописывать в блокнотике

Сообщить модератору | | IP: Записан
Сообщение: 220558

Старое сообщение 26-03-2024 09:01
- За что?
Raid
Офисный шакал

Дата регистрации: Jul 2012
Проживает: Где попало
Сообщений: 534
Возраст: 33

Рейтинг



Цитата:
FiEctro писал:
Ну понятно, опять всё вручную прописывать в блокнотике

Не всё. Если ты программист - можно добавить суффиксы к именам текстур, как это сейчас в MIR - _bump, _spec, _luma, которые цепляются автоматически. Я, правда, не программист, но у меня есть. Имя материала в блендере - это ссылка, так же как и имя материала для меша после экспорта. По этому адресу цепляются битмапы. Дефолтный материал есть - то есть можно не создавать отдельный файл в блокноте, если ты, конечно, не хочешь, например, добавить прозрачность по альфе. Продолжая логику суффиксов, можно вообще все материалы выстроить по такому принципу - _metal, _wood, _glass итд. Обозвал, закинул - и какой надо сразу.

__________________
Ты себя ведёшь как маленький ребёнок, который на улице увидел говно и обрадовался - говно-говно, смотрите кто-то насрал, ну и дела! © Дядя Миша

лиса.забирать.сыр.кусочек = ворона.уронить.сыр.кусочек( 1шт ); © FiEctro

Отредактировано Raid 26-03-2024 в 10:46

Сообщить модератору | | IP: Записан
Сообщение: 220559

Старое сообщение 26-03-2024 10:40
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13354
Возраст: 33

Рейтинг



Ну вот я и думаю сериализовать содержимое исходника в формат похожий на абстрактный ксашевский материал. А вот обратно похоже только дифузку получится подцеплять из имени материала, хотя там тоже могут быть подвохи. Короче такая система крайне не юзерфрендли, но зато материалы из ку3 работают, правда я не знаю кому они нужны вообще.


Цитата:
Raid писал:
Продолжая логику суффиксов, можно вообще все материалы выстроить по такому принципу - _metal, _wood, _glass итд. Обозвал, закинул - и какой надо сразу.


И получить DLL_hell только для суфиксов.

Отредактировано FiEctro 26-03-2024 в 11:27

Сообщить модератору | | IP: Записан
Сообщение: 220560

Старое сообщение 26-03-2024 11:26
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32749
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Короче такая система крайне не юзерфрендли, но зато материалы из ку3 работают, правда я не знаю кому они нужны вообще.

Ты можешь придумать для себя абсолютно любую систему материалов.
И Ксаш её подхватит. Устроит такой вариант?

Но с ограничением, что описание каждого материала - это именованный блок фигурных скобок

C++ Source Code:
"materialname"
{
}

А внутри этих скобок выдумывай любые ключевые слова и любые параметры.
И точи под них плагин или редактор.

Добавлено 26-03-2024 в 14:58:

Есть ещё вариант запись материала в одну строку, но он детально не тестировался.

Добавлено 26-03-2024 в 14:59:

Цитата:
FiEctro писал:
И получить DLL_hell только для суфиксов.

Ну точно покусал кои-кто. А может весна. Я не знаю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 220561

Старое сообщение 26-03-2024 11:59
-
Raid
Офисный шакал

Дата регистрации: Jul 2012
Проживает: Где попало
Сообщений: 534
Возраст: 33

Рейтинг



Цитата:
FiEctro писал:
И получить DLL_hell только для суфиксов.

Это не имеет отношения к dll, т.к. из компиляторов только компиляторы уровней. Все суффиксы описываются либо макросами, которые ты потом дёргаешь в материал, либо прямо шейдерами, если жить скучно.

__________________
Ты себя ведёшь как маленький ребёнок, который на улице увидел говно и обрадовался - говно-говно, смотрите кто-то насрал, ну и дела! © Дядя Миша

лиса.забирать.сыр.кусочек = ворона.уронить.сыр.кусочек( 1шт ); © FiEctro

Сообщить модератору | | IP: Записан
Сообщение: 220562

Старое сообщение 26-03-2024 13:21
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13354
Возраст: 33

Рейтинг



Цитата:
Raid писал:
все материалы выстроить по такому принципу - _metal, _wood, _glass итд. Обозвал, закинул - и какой надо сразу.


Речь не про длл, а то что вы всячески стараетесь прибить параметры гвоздями. В итоге придётся пользователем делать свои дублирующие теги в духе _wall34868 которые ещё не факт что не будут конфликтовать.
Как говорил Дядя Миша материал описывает просто настройки для униформов шейдера.

Цитата:
Дядя Миша писал:
Есть ещё вариант запись материала в одну строку, но он детально не тестировался.


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

Цитата:
Дядя Миша писал:
Ты можешь придумать для себя абсолютно любую систему материалов.
И Ксаш её подхватит. Устроит такой вариант?

Но с ограничением, что описание каждого материала - это именованный блок фигурных скобок


С экспортом ещё более менее понятно. А вот как импортировать из чужих шейдеров?

Отредактировано FiEctro 27-03-2024 в 07:16

Сообщить модератору | | IP: Записан
Сообщение: 220564

Старое сообщение 27-03-2024 07:01
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4643
Возраст: 35

Рейтинг



Цитата:
Дядя Миша писал:
Я вам выложу имплементацию для Quake3 в очередной бета-версии. Помнится я однажды уже выкладывал, но тогда никто не понял что это такое. Да и сейчас я вижу доходит с величайшим трудом.

Просто всем глубоко наплевать на Quake 3

Сообщить модератору | | IP: Записан
Сообщение: 220566

Старое сообщение 27-03-2024 07:50
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32749
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Речь не про длл, а то что вы всячески стараетесь прибить параметры гвоздями.

Ему объясняешь, что ничего никуда не прибито, он говорит - я понял, всё прибито гвоздями.

Цитата:
FiEctro писал:
В итоге придётся пользователем делать свои дублирующие теги в духе _wall34868

Зачем?

Цитата:
FiEctro писал:
Как говорил Дядя Миша материал описывает просто настройки для униформов шейдера.

Материал много чего описывает.

Цитата:
FiEctro писал:
А вот как импортировать из чужих шейдеров?

Приведи пример, что ты собрался импортировать.

Добавлено 27-03-2024 в 10:57:

Ну хотя я понял откуда такое недоверие. Это ты по Unity судишь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 220567

Старое сообщение 27-03-2024 07:57
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13354
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Приведи пример, что ты собрался импортировать.


Ну вот есть условно у тебя моделька карты из сталкера в формате csm. Мне надо подгрузить или хотя бы сериализовать в одном месте все пути к текстурам, дифузки, карты нормалей и так далее.


Цитата:
Дядя Миша писал:
Ну хотя я понял откуда такое недоверие. Это ты по Unity судишь.


Скорее по голдсорцу. Оттуда пошли эти дуратские теги и нарративы что имя текстуры == имени материала.

Цитата:
Дядя Миша писал:
Ему объясняешь, что ничего никуда не прибито, он говорит - я понял, всё прибито гвоздями.


_metal, _wood, _glass
А это что такое?

Цитата:
Дядя Миша писал:
Материал много чего описывает.


Это не правильно. Материал не должен перекладывать на себя функционал шейдера как это делает третья квака. Это должна быть просто структура без какой либо логики.

Отредактировано FiEctro 27-03-2024 в 08:58

Сообщить модератору | | IP: Записан
Сообщение: 220569

Старое сообщение 27-03-2024 08:53
- За что?
Raid
Офисный шакал

Дата регистрации: Jul 2012
Проживает: Где попало
Сообщений: 534
Возраст: 33

Рейтинг



Цитата:
FiEctro писал:_metal, _wood, _glass
А это что такое? [/B]

Это пример, умозрительная конструкция. Моя личная.

__________________
Ты себя ведёшь как маленький ребёнок, который на улице увидел говно и обрадовался - говно-говно, смотрите кто-то насрал, ну и дела! © Дядя Миша

лиса.забирать.сыр.кусочек = ворона.уронить.сыр.кусочек( 1шт ); © FiEctro

Сообщить модератору | | IP: Записан
Сообщение: 220570

Старое сообщение 27-03-2024 09:00
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32749
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Мне надо подгрузить или хотя бы сериализовать в одном месте все пути к текстурам, дифузки, карты нормалей и так далее.

Пока нет своего редактора я не могу что-то комментировать.
Сейчас декомпиляторы настроены так, чтобы сохранить оригинальные пути к текстурам. Точнее даже не декомпиляторы, а материалы.

Цитата:
FiEctro писал:
Оттуда пошли эти дуратские теги и нарративы что имя текстуры == имени материала.

Ксашевская система материалов НЕ НАВЯЗЫВАЕТ такой подход. Она его просто позволяет реализовать на уровне пользователя, не модифицируя бинарные файлы, чисто из скриптов. Raid сказал что ему так будет удобнее - я ему это сделал. Собственно всё. Придумай любой другой подход и точно так же настрой в скриптах.

Цитата:
FiEctro писал:
Это не правильно. Материал не должен перекладывать на себя функционал шейдера как это делает третья квака. Это должна быть просто структура без какой либо логики.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 220573

Старое сообщение 27-03-2024 09:10
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 04:44. Новая тема    Ответить
Страницы (8): « Первая ... « 3 4 5 6 [7] 8 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Моделирование > Обсуждение форматов моделей
Предварительный, промежуточный, главный
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024