Ему надо знать всё по тематике "отсечение лишнего".
Ага, мне надо знать всё :)
Unknown_000
Забей на отсечение видюхой, просто каждому объекту должна соответствовать окружность полностью его накрывающая по которой ты на процессоре за несколько десятков тактов будешь определять попала она в фрустум или нет
Super_inoy
> каждому объекту
Правильнее всё-таки не к объекту, а к группе объектов.
Unknown_000
Обычно проверяют дочерние объекты баундсферы или баундбокса.
ksacvet777
правильнее пострить октодерево ага, но зачем это говорить человеку который является новичком в геймдеве? воспользовавшись простым советом он получил бы повышение производительности раз в 500, а в случае с группой объектов возникают вопросы, по какому принципу группировать, какой оптимальный размер группы в трисах, etc.. Зачем усложнять?
Unknown_000
Видюха не делает никаких отсечений.
Никто ничего не усложняет. Топикстар, дочерние - значит те, которые находятся внутри бокса. Следовательно , если бокс не в пирамиде видимости, значит и его сынишки и дочурки тоже не видны и их не рисуют.
Так надеюся понятнее.
При отсечении лишнего важно чтобы время проверки на видимость было в разы меньше времени отрисовки.
Иначе не совсем понятен смысл апчхимизации.
да это всё понятно, что вы говорите (спасибо, что не молчите :)) особенно идея о построении дерева с вложенными баундбоксами. мне интересна теория как таковая,т.е. ответы на вопросы: почему сделано так, а не иначе. просто хочется всю картину видеть целиком (весь конвеер). А то как не откроешь какую нить книгу - везде приближённо. Может кто знает реально детальную книгу про конвеер или директ3Д?
Unknown_000
> просто хочется всю картину видеть целиком (весь конвеер)
вершинный шейдер -> определение граней -> растеризация -> иерархический z-stencil -> попиксельные операции
Что ещё тебе нужно?
Сделано так, а не иначе, потому что так работает быстро и мало жрёт транзисторов.
Конкретно по стадиям:
1) Вершинный шейдер.
Тут ты делаешь что хочешь, можешь трансформировать вершину и рассчитывать освещение, что угодно. Можешь ничего не делать.
Главное - ты здесь задаёшь позицию вершины и интерполируемые аттрибуты.
2) Определение граней - определяет полигон, который будет рисоваться, или не будет, если он лежит вне экрана. Тут определяются субпиксели для мультисемплинга. Эта часть жёстко вшита в железо.
3) Растеризация - здесь определяются пиксели под заливку и то, как будут интерполироваться аттрибуты.
4) Иерархические z-stensil тесты - предварительные тесты глубины и трафарета с буферами в 256, 64 и 16 раз меньше, чем экранный. Вшито в железо.
5) Попиксельные операции - фрагментный шейдер, тест глубины, трафарета, свой тест (discard).
Куда подробнее?
Unknown_000
> ответы на вопросы: почему сделано так, а не иначе.
почему солнце на востоке встаёт ? исторический так сложилось ...
ты хочешь графикой заниматься или философией ?
лучши учи матчасть КАК СДЕЛАНО, а не ПОЧЕМУ СДЕЛАНО ИМЕННО ТАК :)
"Почему так сделано" - это самый простой вопрос, на который уже был дан ответ. Так проще реализовать в железе. Графический конвейер так устроен, что все уго участки линейны и легко распараллеливаются. При этом можно перебрасывать ресурсы с одной стадии на другую. И единственный участок, который тяжело распараллеливается - это растеризация. Но и это распараллелено в самой последней архитектуре GPU - Fermi.
А так в более старых архитектурах затык обычно был в передаче данных из одной стадии в другую (экспорт вершин), ну и в растеризации. И то и другое уже не является ботлненком в ферме, и в следующей архитектуре AMD тоже скорее всего не будет.
SNVampyre
> z-stensil
интересно, как работает иерархический stencil :)
innuendo
> интересно, как работает иерархический stencil :)
http://www.ixbt.com/video2/r420-p1.shtml
Остановимся на самых интересных фактах. Во-первых, если ранее в R3XX было максимум два процессора квадов, обрабатывающих за такт блок из четырех пикселов (2х2) то теперь таких процессоров стало четыре. Они полностью независимы и каждый из них может исключаться из работы (например, для создания облегченной версии чипа с тремя процессорами при наличии брака в одном из них).
Отметим, что во многом схема похожа на NV40, но есть и кардинальные отличия, на которых мы остановимся подробнее.
Итак, вначале треугольник разбивается на блоки первого уровня (8х8 или 4х4 в зависимости от разрешения рендеринга) и происходит первая ступень отбрасывания невидимых блоков, на основе данных полностью размещенного на чипе мини Z буфера. Его объем не афишируется, но, судя по всему, в R420 он занимает несколько менее 200 килобайт. Всего на этой стадии может быть откинуто до 4 блоков за такт, т.е. до 256 невидимых пикселей.
Затем происходит вторая ступень разбиения - на сей раз, на квады размером 2х2 и происходит раннее отсечение полностью невидимых квадов, на основе хранимого в видео памяти Z буфера второго уровня, с гранулярностью покрытия 2х2. Отметим, что в зависимости от режима MSAA один элемент этого буфера может соответствовать 4 (нет), 8(MSAA 2х), 16 (MSAA 4х) или даже 24 (6х MSAA) точкам в буфере кадра, вот почему его выделение в отдельную структуру, занимающую промежуточный уровень между мини буфером глубины полностью расположенном на чипе и окончательным буфером глубины базового уровня. Таким образом в продуктах NVIDIA мы имеем дело с двухуровневой организацией HSR и буфера глубины, а в продуктах ATI с трехуровневой. Далее, в синтетических тестах, мы обратим внимание на влияние этого фактора на производительность.
SNVampyre
> интересно, как работает иерархический stencil
я не спрашивал про HiZ
я про stencil ИЕРАРХИЧЕСКИЙ спросил
Тема в архиве.