- откомпилированный код. Для текстур, которые вы можете использовать в своих шейдерах, тоже есть такой формат, и перевести текстуру в такой формат можно при помощи последней программы из нашей шустрой троицы - txmake.exe.

Для продвинутых. Каким образом собственные форматы растровых текстур позволяют ускорить рендерер - и использовать более гигабайта текстур для одной модели? Все очень просто:

1. Текстура хранится не сплошным куском, а в виде тайлов - то есть побитой на квадратики. Соответственно, в память грузится не весь массив данных, а только тот квадратик, к которому идет обращение.

2. Внутри файла текстуры хранится не одно изображение, а несколько - последовательно уменьшающихся в размерах и детализации. Для объектов, находящихся на большем расстоянии от камеры, используется текстура с меньшим разрешением - которая грузится быстрее и занимает меньше памяти.

3. Прочие хитрости, вроде оптимизации данных под конкретный рендерер - так, например, prman при конвертации текстур может привести их размеры к величине, кратной степени двойки.

Таким образом, txmake при конвертации текстур создает многостраничный затайленый файл формата TIFF - благо формат позволяет. Просмотреть такой файл можно, чем угодно, хоть ACDSee. Но если вы хотите воспользоваться текстурой размером в 16000x16000 пикселей, а у вас на машине нет 2 гигабайт памяти - лучше использовать так называемый "старый" формат текстур Pixar, который можно получить при помощи того же txmake со специальными параметрами вызова

- и который является еще более оптимизированным вариантом.

В Renderman Pro Server растровые изображения используются не только в качестве текстур, но и, например, как карты теней, если вы не пользуетесь рейтрейсингом. Обработка всех этих растров лежит на могучих плечах txmake.

Одно небольшое отличие txmake от своих консольных собратьев состоит в том, что текстуры сами по себе текстовыми файлами не являются, то есть с ними наши фокусы с пайпингом работать не будут.

Вот, собственно, и все, что я хотел про нее рассказать. Ах, да, я забыл пример. Похулиганим немножко?

По причинам, которые мы только что указали, пусть текстура будет квадратной, 512x512 пикселей. Напишем на ней… напишем на ней.... чего бы такого написать, чтобы никого не обидеть и чтобы литературный редактор пропустил? Вот, придумал: Надпись

Просто и со вкусом. Добавляем вызов текстуры в наш шейдер (по этому поводу переименованный в textured_noise.sl):

surface textured_noise (float freq=100; )

{

Ci = texture(“texture.tif”, s, t)*noise(freq*s,freq*t);

}

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

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

surface textured_noise (float freq=100; )


⇐ вернуться назад | | далее ⇒