в свое время начинал изучение отсюда
просто непонятно, это я настолько неэффективно всё организовал, или просто VS код обвязывает всякими проверками. Ну ладно.
static_cast
Это нормально.
а вот ещё вопросы. Допустим, моя цель - не симуляция работы гпу. То есть, я хочу сделать всё эффективно. От "шейдеров", буфера глубины, блендинга придется избавиться? Или они также и в программных растеризаторах используются?
static_cast
> Допустим, моя цель - не симуляция работы гпу. То есть, я хочу сделать всё
> эффективно.
А АМД и НВидия делают все неэффективно? Ты серьезно?
Не думаю что можно сделать эффективнее чем то ,что сделала целая корпорация , тем более на софт-эмуляции. В эмуляторах все 1 в 1 , только более дискретно. То что на ЦПУ делается в десяток команд а ГПУ будет всего одна + куча аппаратных (бесплатных ) оптимизаций.
Эффективнее имеющихся реализаций можно сделать только в одном случае - ты знаешь что-то такое, чего не знают другие. Пример: рендерер ку1. Там заведомо известна бсп-структура без наложений полигонов, а значит можно применить сканлайн-растеризацию без теста буфера глубины. Но универсальный софтварный рендер написать эффективнее растеризации гпу - это смелая задача.
даже если каким-то чудом рендер окажется "умнее" стандартного, то он всеравно проиграет в разы хардверному из-за выполнения задач процессором не оптимизированным под векторные вычисления.
не разумнее ли использовать новомодные API , позволяющие фактически "запрограммировать" конвеер GPU как угодно.
Mira
> не оптимизированным под векторные вычисления
че правда? у него просто блоков меньше
Может он "убицу" Frostbite делает) Софтрендер там используется для куллинга и рендер очень простой - никакие шейдеры и прочие штуки ненужны.
d.m.k
ну распиши дотпродукт и перемножение матриц на FPU (или даже SSE) и на шейдер ассемблере. и как там предсказуемо кешировать вершины
fullspektr
рисуют один фиг все на гпу)
Mira
> или даже SSE) и на шейдер ассемблере
и там и там 4 инструкции
Ogra,
Mira,
Моласар,
Mira
я не имел в виду "эффективнее, чем в видеокартах". Мне интересно, а нельзя ли что-то из этого исключить/реализовать по-другому, нежели в гпу. Незачем же (наверное) полностью копировать весь "конвеер" на cpu. Нужно всё-таки учитывать "особенности вычислительного процесса" на cpu. Чтобы реализовать всё эффективнее, чем могло бы быть [на cpu].
а что ты делаешь то, просто интересно
не понял вопроса. "Программный растеризатор". Минимум хотелось бы загрузить модель и "полетать" вокруг неё. Сейчас пока времени мало, медленно дело идёт.
Вот например, мне ведь незачем реализовывать поддержку овер нескольких десятков форматов для буфера глубины, или несколько видов текстурирования?
Тема в архиве.