Render.ru

SLC file format

#1
SLC - открытый формат или нет? Может кто с Гритцем общался? Есть ли по формату описание? Я знаю, что есть прецеденты чтения SLC напрямую. Это, конечно, достаточно прозрачный формат, но заниматься реверс-инжинирингом подобного ассемблера не очень хочется.
 
#2
SLC - это не формат, это уже скомпилированный шейдер (причем именно для BMRT). В комплекте BMRT есть утилитка, которая вроде расковыривает готовые шейдеры. Непонятно только зачем это нужно? Почти все шейдеры есть в исходниках.
 
#3
> SLC - открытый формат или нет? Может кто с Гритцем общался? Есть ли по > формату описание? Я знаю, что есть прецеденты чтения SLC напрямую. >Это, конечно, достаточно прозрачный формат, но заниматься реверс- > инжинирингом подобного ассемблера не очень хочется.

Привет,

Я общался, пока писал slcEditor (обрати внимание на название ;-) ).

SLC сиречь закрытый приватный формат шейдеров, скомпиллированных в байт код для непосредственного рендеринга в BMRT. Аналогом в prman является формат SLO. Я в первых версиях парсил этот формат руками, пока Ларри попросил не делать этого, поскольку он (формат) меняется от версии к версии и совместимость не гарантируется.

Для использования формата из своих программ рекоммендуется поставляемая вместе с BMRT библиотека libslcarg.lib, для использования которой в Delphi я сделал оболочку slcargwrap.dll (доступна на моем сайте в сорцах).

Вкратце, все. Еще рах, формат SLC/SLO есть бинарный формат, который редактировать не рекоммендуется, и используюьтся эти файлы исключительно в процессе рендеринга.

Regards,
Alexei Puzikov aka Kidd24
http://www.dream.com.ua
 
#4
Понятно. Спасибо. Еще вопрос. Формат slc меняется от версии к версии, так? Обеспечивает ли Гритц обратную совместимость? То есть старые SLC читаются ли новыми BMRT или SL надо перекомпайлить? Если обратная совместимость форматов Гритцем гарантируется - то игра стоит свеч.

Дело в том, что вы с Доктором немного не поняли. Мне требуется парсинг не входных ПАРАМЕТРОВ шейдера (что элементарно делается через либу или утилиту), а парсинг ВСЕГО скомпилированного шейдера. Хочу читать скомпилированные шейдеры (то есть их суть) без помощи BMRT.
 
#5
> Формат slc меняется от версии к версии, так?

Да.

> Обеспечивает ли Гритц обратную совместимость? То есть старые
> SLC читаются ли новыми BMRT или SL надо перекомпайлить?

Читаются, но это не гарантируется.

> Если обратная совместимость форматов Гритцем гарантируется - то
> игра стоит свеч.

Еще раз - это не гарантируется. Вполне возмодно, что в следующем релизе формат поменяется очень сильно или вообще отойдет в небытие в связи с переходом на DSO/DLL.

> Дело в том, что вы с Доктором немного не поняли. Мне требуется
> парсинг не входных ПАРАМЕТРОВ шейдера (что элементарно
> делается через либу или утилиту), а парсинг ВСЕГО
> скомпилированного шейдера. Хочу читать скомпилированные
> шейдеры (то есть их суть) без помощи BMRT.

Утилиту пишешь? Какую?
 
#8
К Рендермену. К стандарту :) То есть это будет библиотека, которая обеспечивает чтение и запись файлов в различных форматах. В RIB, SL, может быть SLC, и так далее. С необходимым и расширенным набором функций. Практически, там должно быть все, что бы построить свой собственный рендерер (за исключением функций работы с геометрией и непосредственно рендеринга). Но этим она не ограничивается. Я надеюсь оптимизировать ее по памяти, под различные процессоры (как минимум под MMX/SSE), обеспечить малтитриадинг, НОРМАЛЬНЫЙ превью в OpenGL (с использованием шейдеров), поддержать различные RM-биндинги. Например, построение конвертера RIB->Python, RIB->Scheme или RIB->C должно по сути стать делом нескольких строчек кода. То есть суть библиотеки сводится к парсингу и лексическому анализу RIB, SL, SLC, C и тп, запись в собственном формате, внесение изменений на лету, а затем снова запись на диск в другом формате, или что еще (например передача данных рендереру, браузеру объектов, редактору, 3D программе).
 
Сверху