Комментарий к Статье Построение теней в OpenGL при помощи теневых буферов
В данной статье рассказывается о построении теней при помощи использования расширений OpenGL, таких как ARB_shadow, ARB_depth_texture, ARB_shadow_ambient. Статья сопровождается исходным кодом на Delphi.
hmm.. эта штука "проглатывает" все остальные текстуры
Чё-то не очень-то работает.
Нельзя ли хоть код-то нормально писать, а то там пропущены аргументы, там необъявленный массив и т.д.
У меня нифига не работает.
И кстати там не надо после рендера в текстуру буфера очищать?
Воопервых не понял откуда беруться некие PS, PT, PR, PQ используемые во втором проходе.
Во вторых не понял что вообще устанавливают эти команды:
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB,
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FAIL_VALUE_ARB, 0.5);
Дальше непонятно чем отличается glTexGeni(GL_S, GL_EYE_LINEAR) от я так понимаю стандартного параметра GL_TEXTURE_GEN_MODE для всех четырех координат и зачем нам их менять...
Дальше я не понял сам принцип работы. Мы создаем "Карту теней" как текстуру, потом рендерим картинку со взгляда источника света, и записываем картинку в карту теней на первом проходе. Потом на втором проходе карта теней не высплывает вообще никаким образом, то есть эту текстуру 0 мы не используем никак вообще, вопрос зачем мы её тогда рисовали, судя по всему не просто так. Соответсвенно вопрос - как получается что карта теней как-то накладывается на картинку и регулирует освещенность ?
Интересно, как определялись коэффициенты в процедуре Pass2:
glTranslatef(0.5, 0.5, 0.5); glScalef(0.5, 0.5, 0.5);
Стоит чуть-чуть их изменить, как тени тут же портятся непостижимым образом!
1/2 =))
это для перевода координат из диапозона [-1; 1] к [0; 1]
тц = тц * 0.5 + 0.5
С мультисэмплингом жутко тормозит!
KDenisK
Через шейдеры, есть возможность за один проход отрисовать 4е источника света.
Заместо стенсила, используется текстура RGBA. По-моему в лекциях про тени это было написанно.
Centuri0n
+1 ничерта не понятно. но когда скачал исходнег то там те массивы были объявлены. а еще оказалось что после
glGenTextures(1, &DepthTextureID);
пропущена строка
glBindTexture(GL_TEXTURE_2D, DepthTextureID);
>>Потом на втором проходе карта теней не высплывает вообще никаким образом, то есть эту текстуру 0 мы не используем никак >>вообще, вопрос зачем мы её тогда рисовали, судя по всему не просто так. Соответсвенно вопрос - как получается что карта >>теней как-то накладывается на картинку и регулирует освещенность ?
мне тоже интересно.
Я что-то не врублюсь, а если захочу использовать объекты покрытые текстурой то тут как быть
мультисэмплинг подрубать чтоль ?
Kavis
И как тебе он поможет?
Придумал аналог высказывания:
"Написал вертексный шейдер, пропало освещение.
Нужно буфер трафарета подрубить, чтоб спекуляр появился?"
NULL_PTR
Ну смешивать текстуры альфаканалом
А что можно в этом случае сделать ?
NULL_PTR
Ну не знаю что делать :)
, есть какой-то выход из этого положения ?
Мультитекстурирование
NULL_PTR
Спасибо
Тема в архиве.