Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> software rendering, что это такое? 
:(
    Опции темы
Чупакабро
Дата 1.5.2009, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: 2
Всего: 4



Вот запустил тут Unreal Tournament в этом режиме, в разрешении 1280*1024 и 32-битным цветом. И ведь не тормозит! Вот что удивляет.
Насколько я понимаю, видеокарта тут вообще не при делах: координаты вершин, освещение считает  процессор, он же занимается текстурированием и всем остальным.
Вопрос у меня в основном такой: где находится задний буфер кадра - в оперативной или видеопамяти, и как туда записывются значения цвета пикселей?
Если более в общем спросить, то как вообще все рисуется? (то есть как получаются экранные координаты из трехмерных, это я знаю, а вот как закрашиваются полигоны, как организован буфер кадра и z-буфер и доступ к ним, непонятно).
Я просто пытался что-то подобное сделать, но фреймрейт ниже плинтуса. Когда экран просто заливаю одним цветом, то несколько сотен fps, а когда начинаю рисовать треугольники, программа начинает якорить, причем дело не в количестве полигонов, а в площади экрана, ими занимаемой. Буфер кадра у меня просто массив типа dword.
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
smalcom
Дата 2.5.2009, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: нет
Всего: 7



Цитата

Я просто пытался что-то подобное сделать, но фреймрейт ниже плинтуса.

на чем писал?


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Чупакабро
Дата 2.5.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: 2
Всего: 4



Цитата(smalcom @  2.5.2009,  03:08 Найти цитируемый пост)
на чем писал?

 Провокационный вопрос  smile 
На Delphi. Но неужели компилятор Delphi настолько убогий, что простые операции умножения и сложения не может по человечески перевести в машинные коды?
Я просто считаю числа и полученные значения записываю в массив, а потом этот массив вывожу на экран с помощью функции API SetDIBitsToDevice.
Или нужно использовать какие-то особые инструкции для расчетов?


Это сообщение отредактировал(а) Чупакабро - 2.5.2009, 12:21
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
Чупакабро
Дата 20.5.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: 2
Всего: 4



Прошу прощения за даблпостинг, но что, никто не знает ничего по теме?
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
arilou
Дата 21.5.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Ключевые слова: implementing software rendering в Гугле.


Цитата(Чупакабро @  1.5.2009,  20:56 Найти цитируемый пост)
Я просто пытался что-то подобное сделать, но фреймрейт ниже плинтуса. Когда экран просто заливаю одним цветом, то несколько сотен fps, а когда начинаю рисовать треугольники, программа начинает якорить, причем дело не в количестве полигонов, а в площади экрана, ими занимаемой.


значит проблема в том месте, где идут вызовы методов отрисовки. Что-то мне подсказывает, что вам надо профайлером погонять и посмотреть, где больше всего времени проводит процессор.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Чупакабро
Дата 22.5.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: 2
Всего: 4



Я слово "профайлер" первый раз в жизни услышал)))
Скачал наобум какой-то MiniProfiler, но он выдает странные результаты:
       
Цитата
 Name|Call Count| Total time (s)|Average time (s)|    Max time (s)|    Min time (s)
      Render          4 4090067718.651018 1022516929.662754 7470357063.658645         0.351623
    clearbuf          4 5504523831.546861 1376130957.886715         0.000621         0.000465
       scene          4  5149819.170913   1287454.792728     38956.502515         0.159368
     Shadows          4 8256692755.597239 2064173188.899310         0.192308         0.189242
DrawTriangle      11572 3931852441.641584    339772.938268         1.210941         0.000003
     trCycle       5936 8099452975.869730   1364463.102404         0.012580         0.000005
   Drawpixel     237896 9121702335.006589     38343.235426         0.001407         0.000001
    Lighting      18692        0.039108         0.000002         0.001036         0.000002
       Depth      45032 2909595885.812100     64611.740225         0.000384         0.000001
      ScrBuf      45032 8807135179.571996    195575.039518         0.000622         0.000001 

То есть доли секунды  - это я понимаю, но что значит, например 4 5504523831.546861 секунд?
То ли я что-то не понимаю, то ли этот профайлер криво написан.

Поэтому посоветуйте пожалуйста нормальный профайлер!
Хотя, кстати, почему бы просто не использовать GetTickCount- стандартную функцию определения времени?

Да, и метод отрисовки Drawtriangle я сам написал, внутри там ничего не вызывается.
Я могу предположить тормоза по 2 причинам:
 - большое количество вычислений на 1 пиксель (расчет освещенности для каждого пикселя)
 - тормоза при обращении к массиву, где хранятся цвета пикселей (буферу кадра)

Добавлено через 1 минуту и 34 секунды
ЗЫ С Гуглом я на вы. И с английским тоже)) Иначе бы не писал на этом форуме.
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
arilou
Дата 23.5.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(Чупакабро @  22.5.2009,  18:05 Найти цитируемый пост)
Поэтому посоветуйте пожалуйста нормальный профайлер!


Это лучше в дельфийском разделе спросить, я не в курсе. 

Цитата(Чупакабро @  22.5.2009,  18:05 Найти цитируемый пост)
 - тормоза при обращении к массиву, где хранятся цвета пикселей (буферу кадра)

Это врядли, обычно массив - самая быстрая штука, по крайней мере в С++ и С#.

Цитата(Чупакабро @  22.5.2009,  18:05 Найти цитируемый пост)
Я слово "профайлер" первый раз в жизни услышал)))

Для 3D программиста эту штуку надо юзать постоянно, для контроля за производительностью.

Смысл в профайлере в данном случае в том, чтобы посмотреть наиболее часто вызываемые методы, и оптимизировать их в первую очередь. 
У тебя Дельфи, тут еще надо смотреть, как ты с памятью обращаешься, тоже может влиять на производительность, если много аллокаций/деаллокаций.

А может и алгоритм неправильный.

Добавлено через 38 секунд
ЗЫ. В самообразовательных целях можно посмотреть http://www.ogre3d.org Там вроде был софтваре рендер. Тока там на С++.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1179 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.