Войти
ПрограммированиеФорумГрафика

Тестирование софт рендера Quake. (4 стр)

Страницы: 13 4 5 621 Следующая »
#45
11:04, 7 сен. 2016

Truthfinder
Если я не ошибаюсь, то TexEnv это параметр текстурного юнита. Никуда он не сбрасывается, а сохраняется как и другие параметры текстурного юнита.


#46
11:22, 7 сен. 2016

Panzerschrek[CN]
> Никуда он не сбрасывается, а сохраняется как и другие параметры текстурного
> юнита.

Я тоже так думал. Но по логам приходит GL_REPLACE. А через некоторое время рисуется прозрачная консоль. Но прозрачность консоли обеспечивается через glColor4f. В результате у меня консоль непрозрачная, а через видеокарту она прозрачная.

#47
19:26, 7 сен. 2016

skalogryz
> баг с освещением на nailgun-е хорошо виден

Это не баг с освещением, это непонятно что вообще.

#48
20:16, 7 сен. 2016

Truthfinder
> Я тоже так думал. Но по логам приходит GL_REPLACE. А через некоторое время
> рисуется прозрачная консоль. Но прозрачность консоли обеспечивается через
> glColor4f. В результате у меня консоль непрозрачная, а через видеокарту она
> прозрачная.
А если уже отдельные тесты написать для твоего OpenGL32.dll?
Речь о "рендерере квейка" уже не ведётся, а именно о софтверной реализации opengl (пусть даже версии 1.1).
легче будет тестировать, чем непосредственно в Quake-е.

#49
5:11, 8 сен. 2016

skalogryz
> А если уже отдельные тесты написать для твоего OpenGL32.dll?

А есть эти тесты. Отдельные тесты для проверки важных кейсов. И прозрачность консоли уже исправлена. Но есть случаи, когда у меня просто нет объяснения происходящему. И какой тест писать на это непонятно. Вот пример с багом нейлгана, который приняли за баг освещения.

текстура:

+ Показать

Вот лог вызовов:

glDepthFunc(GL_LEQUAL);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 96); // текстура нейлгана
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

glBegin(GL_TRIANGLE_FAN);
glTexCoord2f(0.462662f, 0.553691f); glColor3f(0.310f,0.310f,0.310f); glVertex3f(216.f, 255.f, 75.f);
glTexCoord2f(0.381494f, 0.553691f); glColor3f(0.512f,0.512f,0.512f); glVertex3f(216.f, 161.f, 75.f);
glTexCoord2f(0.381494f, 0.406040f); glColor3f(0.550f,0.550f,0.550f); glVertex3f(195.f, 161.f, 75.f);
glTexCoord2f(0.462662f, 0.406040f); glColor3f(0.365f,0.365f,0.365f); glVertex3f(195.f, 255.f, 75.f);
glTexCoord2f(0.472403f, 0.372483f); glColor3f(0.234f,0.234f,0.234f); glVertex3f(195.f, 255.f, 22.f);
glTexCoord2f(0.472403f, 0.520134f); glColor3f(0.234f,0.234f,0.234f); glVertex3f(216.f, 255.f, 22.f);
glEnd();

//...
// немного разных glBegin

glBegin(GL_TRIANGLE_FAN);
glTexCoord2f(0.881494f, 0.406040f); glColor3f(0.550f,0.550f,0.550f); glVertex3f(195.f, 161.f, 75.f);
glTexCoord2f(0.881494f, 0.553691f); glColor3f(0.512f,0.512f,0.512f); glVertex3f(216.f, 161.f, 75.f);
glTexCoord2f(0.962662f, 0.553691f); glColor3f(0.310f,0.310f,0.310f); glVertex3f(216.f, 255.f, 75.f);
glEnd();

DepthFunc = LEQUAL. Зачем поверх перерисовывают непонятно что? И почему в hw рендере nailgun выглядит нормально? У меня просто нет идей, и какой на это тест писать мне непонятно. Вот такие непонятные вещи больше всего времени отнимают в разработке.

#50
5:41, 8 сен. 2016

Truthfinder
> Вот пример с багом нейлгана, который приняли за баг освещения.
такое чувство что для вееров у тебя как-то текстурные координаты съезжают. Потому что на скриншоте видно, что текстура какая-то есть, но не те координаты?
или координаты те, да текстура другая подставилась?

+ Показать

Но если квейк всё веерами рисует, то проблема должна была нарисоваться раньше, в более грубых формах.
#51
5:49, 8 сен. 2016

skalogryz
> такое чувство что для вееров у тебя как-то текстурные координаты съезжают.

Это дамп вызовов из квейка. Я к ним никакого отношения не имею. Это что называется raw input(необработанный). Vertex 1 в 1. То есть треугольник намеренно нарисуется поверх уже нарисованного.

#52
6:02, 8 сен. 2016

Truthfinder
> Это дамп вызовов из квейка. Я к ним никакого отношения не имею. Это что
> называется raw input(необработанный). Vertex 1 в 1. То есть треугольник
> намеренно нарисуется поверх уже нарисованного.
хм. с другой текстурой.

+ Показать

и обратным напралением точек. это получается Back-face? может он и рисоваться-то не должен?
#53
6:10, 8 сен. 2016

skalogryz
> хм. с другой текстурой.

В кваке другая координатная система. То есть 1234 соответствует верхней грани.А зеленые 123 это тот самый треугольник справа вверху.

#54
6:15, 8 сен. 2016

Truthfinder
> В кваке другая координатная система. То есть 1234 соответствует верхней грани.А
> зеленые 123 это тот самый треугольник справа вверху.
Даже если и другая система координат, порядок точек он должен соблюдать чтобы front и back различать?

Видно что эти обратные треугольники накладываются поверх правильно нарисованных

+ Показать

glCullFace используется квакой? и если да, то какое значение на момент отрисовки? (может и отдельный тест написать?)

Подправленный вариант.

+ Показать

#55
6:53, 8 сен. 2016

skalogryz
> glCullFace используется квакой? и если да, то какое значение на момент
> отрисовки? (может и отдельный тест написать?)

Да, порядок разный в отрисовке. И я тоже хочу проверить что с отсечением. У меня просто лога пока под руками нет.

P.S. Иного рационального объяснения кроме кривого cull face у меня нет.

#56
13:44, 8 сен. 2016

Truthfinder
> P.S. Иного рационального объяснения кроме кривого cull face у меня нет.
Найди! Найди правду! :D

#57
16:31, 8 сен. 2016

skalogryz
> Найди! Найди правду! :D

Обожаю свой отладочный код и баги с ним связанные:

if (state->bCullFace && false) {

#58
16:48, 8 сен. 2016

Truthfinder
> Обожаю свой отладочный код и баги с ним связанные:
красота же! новая длл?

#59
16:55, 8 сен. 2016

skalogryz
> красота же! новая длл?

Какая новая dll?

Страницы: 13 4 5 621 Следующая »
ПрограммированиеФорумГрафика