Инструменты пользователя

Инструменты сайта


q3bers:materials

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
q3bers:materials [31.08.2009 12:24]
GT-Agressor
q3bers:materials [06.07.2020 03:50] (текущий)
Строка 1: Строка 1:
-Оригинальные шейдеры из Quake 3 не совсем подходят для Q3Bers, так как последнему требуется прямо задать какой стейдж (слой) материала должен быть освещаемым. +Оригинальные материалы (.shader) из Quake 3 не совсем подходят для Q3Bers, так как последнему требуется прямо задать какой стейдж (слой) материала должен быть освещаемым. 
  
 Пример материала:  Пример материала: 
Строка 55: Строка 55:
 Правила:  Правила: 
  
-Научиться визуально на лету определять какой стейдж является освещаемым. Если непонятно, можно посмотреть как выглядит этот материал в Quake 3, и на основании этого сделать вывод. +Научиться визуально на лету определять какой стейдж является освещаемым. Если непонятно, можно посмотреть как выглядит этот материал в Quake 3, и на основании этого сделать вывод. 
  
-Если первый стейдж не имеет бленда и не $lightmap - то вписываем lightStage.  +  * Если первый стейдж не имеет бленда и не $lightmap - то вписываем lightStage.  
- +  Если первый стейдж блендится, смотрим что за бленд: blendFunc GL_ONE GL_ZERO - нет бленда! - вписываем lightStage. прочие blendFunc - прозрачный стейдж. Не пишем lightStage.  
-Если первый стейдж блендится, смотрим что за бленд: blendFunc GL_ONE GL_ZERO - нет бленда! - вписываем lightStage. прочие blendFunc - прозрачный стейдж. Не пишем lightStage.  +  Если alphaFunc GE128 (или другой параметр) - это значит дырявая текстура, скорее всего освещаемая.  
- +  Если первый lightStage-стейдж (не обязательно первый, а вообще в шейдере первый lightStage) имеет blendFunc, то бленд не убирать. Но последующие lightStage-стейджи тогда должны избавиться от blendFunc blend или blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA (что идентично) и вписать alphaFunc GE128. 
-Если alphaFunc GE128 (или другой параметр) - это значит дырявая текстура, скорее всего освещаемая.  +
- +
-Если первый lightStage-стейдж (не обязательно первый, а вообще в шейдере первый lightStage) имеет blendFunc, то бленд не убирать. Но последующие lightStage-стейджи тогда должны избавиться от blendFunc blend или blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA (что идентично) и вписать alphaFunc GE128. +
  
 В шейдерах террайнов в TeamArena есть засада: есть два lightStage в шейдере, но они не дырявые, а логика light pre-pass требует хранения в G-буфере пиксела только одного видимого стейджа. А эти стейджи плавно перетекают один в другой. Но этот вопрос решен  : движок их объединяет в один пасс _interpolate, так что не заморачивайтесь. Главное, надо чтобы соблюдалось правило:  В шейдерах террайнов в TeamArena есть засада: есть два lightStage в шейдере, но они не дырявые, а логика light pre-pass требует хранения в G-буфере пиксела только одного видимого стейджа. А эти стейджи плавно перетекают один в другой. Но этот вопрос решен  : движок их объединяет в один пасс _interpolate, так что не заморачивайтесь. Главное, надо чтобы соблюдалось правило: 
Строка 69: Строка 66:
 стейджи 0 и 1 должны:  стейджи 0 и 1 должны: 
  
-иметь одинаковый rgbGen  +  * иметь одинаковый rgbGen  
- +  оба стейджа должны быть lightStage или не-lightStage  
-оба стейджа должны быть lightStage или не-lightStage  +  blendFunc стейджа0 = нет или (GL_ONE GL_ZERO)  
- +  blendFunc стейджа1 = blend 
-blendFunc стейджа0 = нет или (GL_ONE GL_ZERO)  +
- +
-blendFunc стейджа1 = blend +
  
  
q3bers/materials.1251707048.txt.gz · Последнее изменение: 06.07.2020 03:50 (внешнее изменение)