Берсеркер
2319 постов
Карма: 216
#241 06 января 2009 в 15:42
поправочка:<br />Встречаются первые стейджи без бленда и не $lightmap.<br />Обычно это какое-нить пламя вертится и светится; конечно же, такой стейдж НЕ метим lightStage.<br />Вобщем в этом вопросе надо уметь читать шейдер, чтоб понять что он рисует.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
2319 постов
Карма: 216
#242 06 января 2009 в 16:58
Сделал механизм обработки загружаемых текстур:<br />Add (img0 img1) Складывает две текстуры<br />Sub (img0 img1) Вычитает текстуры<br />Mul (img0 img1) Умножает текстуры<br />AddConst (img R G B A) &lt; RGBA от 0 до 99, float &gt; Прибавляет к текстуре константу<br />SubConst (img R G B A) &lt; RGBA от 0 до 99, float &gt; Вычитает из текстуры константу<br />MulConst (img R G B A) &lt; RGBA от 0 до 99, float &gt; Умножает текстуру на константу<br />InvertRGBA / Invert (img) Инвертирует всю текстуру<br />InvertRGB / InvertColor (img) Инвертирует RGB текстуры<br />InvertAlpha / InvertA (img) Инвертирует Alpha текстуры<br />MakeAlpha / MakeA (img) Складывает RGB и пишет в Alpha<br />Luminance / Mono (img) Делает RGB текстуры монохромной<br />Interpolate / InterpolateRGBA (img0 img1 img2) Интерполирует всю текстуру из img0 в img1, вес берется из Alpha img2.<br />InterpolateColor / InterpolateRGB (img0 img1 img2) Интерполирует RGB текстуры из img0 в img1, вес берется из Alpha img2.<br />InterpolateA / InterpolateAlpha (img0 img1 img2) Интерполирует Alpha текстуры из img0 в img1, вес берется из Alpha img2.<br />Alpha2Normals / A2Normals (img N) Строит в RGB normalMap из Alpha (карта высот)<br />RGB2Normals / Color2Normals (img N) &lt;N от 0 до 128, float&gt; Строит в RGB normalMap из Mono(карта высот в RGB)<br /><br />Через символ &quot;/&quot; обозначены синонимы, для удобства запоминания.<br /><br />Функции могут иметь вложения, их кол-во не ограничено ничем. Например:<br />map add(rgb2normals(mulconst(img0 1 1 0 1) 16) Mono(img1))<br /><br />Если обрабатываемые картинки имеют разный размер, все они подгоняются<br />под размер первой картинки.<br /><br />Если загружаются normalMap, вызываются специальные ветки, поэтому<br />карты нормалей обрабатываются корректно.<br /><br />Высказывайте мнения и пожелания.&nbsp; 8)
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
GT-Agressor
321 постов
Карма: 42
#243 06 января 2009 в 18:26
ок, попробую, простой пример:<br />textures/egyptsoc_sfx/lig_032-01b1-2k<br />{<br /> qer_editorimage textures/egyptsoc_sfx/lig_032-01b1.tga<br /> q3map_lightimage textures/egyptsoc_sfx/lig_032-01b.blend.tga<br /> q3map_surfacelight 2000<br /> surfaceparm nomarks<br /> {<br /> map $lightmap<br /> //rgbGen identity - у тебя в шейдерах в этоом месте запись оставалась, но её не надо?<br /> }<br /> {<br /> map textures/egyptsoc_sfx/lig_032-01b1.tga<br /> blendFunc GL_DST_COLOR GL_ZERO<br /> //rgbGen identity<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lightStage //здесь освещаемый стейдж, все понятно<br /> }<br /> {<br /> map textures/egyptsoc_sfx/lig_032-01b.blend.tga<br /> blendfunc GL_ONE GL_ONE //прозрачный стейдж?<br /> rgbGen wave sin .3 .1 0 0.5<br /> }<br />}<br /><br /><br />PS в тех материалах, что идут с ку3берс бывает строка light 1, у меня, на дефолтной кваке3 1.32 в шейдерах такого нет, надо её?
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
GT-Agressor
321 постов
Карма: 42
#244 06 января 2009 в 18:32
Вай, сразу даже не понятно зачем все это нужно :)<br /><br />Когда подумаешь, вроде понятно становится :)<br /><br />То есть, например, уже не нужны отдельные файлы с картой высок, а можно просто в материале задать, как её получить из исходной екстуры?<br />(я, конечно, понимаю, что в идеале карту высот надо не из текстуры получать, а рисовать отдельно :))
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
Берсеркер
2319 постов
Карма: 216
#245 06 января 2009 в 18:36
light 1 - я её не вписывал ))) это из Ку3<br />Это информация для построителя lightmaps что данный сурф излучает свет силой 1.<br /><br />Смотрим шейдер:<br /><br />стейдж 1 - просто лайтмап. Ничего не делаем.<br />rgbGen identity - можно игнорировать.<br /><br />стейдж 2 - правильно что пометил lightStage, это освещаемый материал, блендится с лайтмапом.<br /><br />стейдж 3 - да, прозрачный, он накладывается на предыдущие аддитивным блендом. Это может быть свечение.<br /><br />Зачот! &nbsp;;)
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
2319 постов
Карма: 216
#246 06 января 2009 в 18:37
GT-Agressor<br />карты высот - это ты про новые функции?&nbsp; :)<br />По карте высот можно на этапе загрузки строить бампмап. Так можно дисковое место на текстурах экономить.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
GT-Agressor
321 постов
Карма: 42
#247 06 января 2009 в 18:45
а вот с террайном, например:<br />textures/rungolem-5-2/terrain_0to1<br />{<br /> surfaceparm nolightmap<br /> q3map_novertexshadows<br /> q3map_forcesunlight<br /> {<br /> map textures/yavin/rockmossy.jpg<br /> rgbGen vertex<br /> alphaGen vertex<br /> tcmod scale 0.25 0.25<br /> lightStage //стейдж 1<br /> }<br /> {<br /> map textures/yavin/jung8.jpg<br /> rgbGen vertex<br /> alphaGen vertex<br /> tcmod scale 0.25 0.25<br /> blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA<br /> lightStage //стейдж 2? а в одном из примеров в ку3берс эта строка только в первом стейдже была :( textures/terrain/mpterra2_0to1, хотя там ещё третий стейдж есть<br /> }<br />}<br /><br />
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
Берсеркер
2319 постов
Карма: 216
#248 06 января 2009 в 18:58
Про террайны я писал: это особый случай. Метить оба стейджа.<br />Вот пример из ТимАрена:<br /><br />textures/terrain/mpterra1_1to2<br />{<br /> surfaceparm nolightmap<br /> q3map_novertexshadows<br /> q3map_forcesunlight <br /> {<br /> map textures/stone/pjrock12c.tga<br /> rgbGen vertex<br /> alphaGen vertex<br /> tcmod scale 0.125 0.125 <br /> lightStage<br /> }<br /> {<br /> map textures/stone/pjrock10c.tga<br /> tcmod scale 0.05 0.05 <br /> rgbGen vertex<br /> alphaGen vertex<br /> blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA<br /> lightStage<br /> }<br /> {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map textures/skies2/clouds2.tga<br /> blendfunc filter<br /> tcmod scale 0.01 0.01<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tcMod scroll -0.1 0.1<br /> <br /> }<br />}<br />
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
GT-Agressor
321 постов
Карма: 42
#249 06 января 2009 в 19:14
ага, ещё, а если так?<br />textures/egyptsoc_sfx/lig_b064-01a<br />{<br /> qer_editorimage textures/egyptsoc_sfx/lig_b064-01a.tga<br /> {<br /> map textures/egyptsoc_sfx/lig_b064-01a.tga<br /> lightStage //только здесь?<br /> }<br /> {<br /> map $lightmap<br /> blendfunc filter //здесь прозрачный стейдж? а зачем он?<br /> }<br /> {<br /> map textures/egyptsoc_sfx/lig_b064-01b.blend.tga<br /> blendfunc add <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rgbgen wave sin .5 .3 0 1<br /> }<br />}
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
Берсеркер
2319 постов
Карма: 216
#250 06 января 2009 в 19:18
первый стейдж - lightStage, верно<br />второй - $lightmap - она блендится с первым (умножается). Так что оно не прозрачное&nbsp; :)<br />третье - блястит что то<br /><br />верно.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.