Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 06.04.2012, 03:10   #1
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Render World и Графический процессор видеокарты

Как пишут в всяких статейках графический процессор держит на себе всю графическую обработку включая построение изображения.
Пруф1:
графический процессор — занимается расчётами выводимого изображения, освобождая от этой обязанности центральный процессор, производит расчёты для обработки команд трёхмерной графики.
Пруф2:
Графический процессор (англ. graphics processing unit, GPU) — отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг. Современные графические процессоры очень эффективно обрабатывают и отображают компьютерную графику
Вот теперь припустим у нас в Blitz3D код главного цикла:
Repeat
...  ;здесь код жрущий ресурсы центрального процессора
...  ;всякая математика, вычисления и оптимизация
...  ;включая команды HideEntity, EntityTexture и т.п.


;Перед командой RenderWorld центральный процессор завершает все свои
;дела и передает работу для графического процессора:
RenderWorld()  ;И чо, пока графический проц делает изображение ЦП стоит?
;Дальше ЦП опять вступает в работу после простоя и рисует всякие
;изображения как обычно в блице перед Flip`ом бывает.
Flip
Forever
End
Это все действительно так? Или я чтото недопонял...
И вообще, как на блиц влияет работа графического процессора? Работает ли он при операторе RenderWorld?
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 03:39   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Render World и Графический процессор видеокарты

RenderWorld ещё и отсеивает что рисовать с какой камеры, а что не рисовать, ну и общается с GAPI - в общем, цпу работы у него достаточно.
Работает ли он при операторе RenderWorld?
ну, естественно, рисует то всё видюшка.
она растеризует треугольники, интерполирует текстуры, обрабатывает каждый пиксель на экране. чего там в блице ещё есть? бленды текстур - тоже на гпу.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (06.04.2012)
Старый 06.04.2012, 04:30   #3
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Render World и Графический процессор видеокарты

Сообщение от Mr_F_ Посмотреть сообщение
цпу работы у него достаточно.
Ты имеешь в виду, что во время исполнения RenderWorld занят графический процессор всякими прорисовками и в это же время есть дела и для центрального процессора?

п.с. Вопрос не по теме:
HideEntity - освобождает память видеокарты, а
FreeEntity - освобождает память и видеокарты и ОЗУ?
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 07:16   #4
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Render World и Графический процессор видеокарты

Сообщение от Halk-DS Посмотреть сообщение
Ты имеешь в виду, что во время исполнения RenderWorld занят графический процессор всякими прорисовками и в это же время есть дела и для центрального процессора?

п.с. Вопрос не по теме:
HideEntity - освобождает память видеокарты, а
FreeEntity - освобождает память и видеокарты и ОЗУ?

Я считаю что всё идет по порядку
И когда ты делаешь renderWorld у тебя у тебя вся система занимается именно обработкой графики, но весь цикл в 17 мс - назвать "Простоем" я не могу )

А на счет hideEntity и freeEntity я думаю ты прав!
Сначала я подумал а зачем из видеопамяти удалять hideEntity? а потом подумал а нафига его там держать? )) Так что думаю логично.
__________________
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 09:53   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Render World и Графический процессор видеокарты

ничего hideentity не убирает из видеопамяти. сами подумайте, вот загрузили мы меш и откопировали его copyentity. один скрыли, что он будет из видопамяти убирать? меш то один.
он просто убирает объект из списка рендерящихся объектов.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
Hulk-DS (06.04.2012), St_AnGer (06.04.2012)
Старый 06.04.2012, 10:37   #6
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Render World и Графический процессор видеокарты

Всё правильно, когда обработана вся логика и выдана команда на формирование кадра, игра не может продолжать дальнейшую обработку пока не будет рассчитан кадр. И процессор в это время обрабатывает другие процессы системы или другие потоки игры если они есть (например музыка обычно играет отдельным потоком).

На самом деле, RenderWorld возвращает управление сразу как отработает его код, а формирование кадра может быть ещё в процессе. Однако Flip1 форсирует ожидание формирования кадра и его вывода на экран.

Аналогично работает видеокарта, когда видеокарта в монопольном режиме (игра в фуллскрин), она рендерит только то что получает от игры. Поэтому, когда CPU считает логику GPU отдыхает.

Именно поэтому чтобы получить максимальный fps в играх надо чтобы CPU и GPU полностью удовлетворяли потребностям друг друга, чтобы взаимные ожидания были наименьшими.
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
Hulk-DS (06.04.2012), St_AnGer (06.04.2012)
Старый 06.04.2012, 12:14   #7
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Render World и Графический процессор видеокарты

А я считал и пока считаю, что все Entity (будь то Меш или его копия) при загрузке ложатся в оперативную память
А те Entity, которые надо рендерить помещаются в видео-память для максимальной скорости рендера

СКАЖИТЕ ЕСЛИ НЕ ТАК!
__________________
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 12:16   #8
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Render World и Графический процессор видеокарты

ЕМНИП в видеопамять помещаются только текстуры
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
burovalex (07.04.2012), Hulk-DS (06.04.2012)
Старый 06.04.2012, 12:46   #9
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Render World и Графический процессор видеокарты

геометрия вообще-то тоже - VB/IB.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ABTOMAT (11.04.2012), burovalex (08.04.2012), Hulk-DS (06.04.2012)
Старый 06.04.2012, 14:11   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Render World и Графический процессор видеокарты

СКАЖИТЕ ЕСЛИ НЕ ТАК!
скажу еще раз: ЭТО НЕ ТАК.

Entity занимает совсем немного места в опреативки и никаким образом не касается видеопамяти. Видеопамять занимает меш. Вся проблема в кривоватой блицовой архитектуре. Когда мы создаем ентити LoadMesh-ом или там CreateCube-ом, то кроме ентити создается и меш. Тогда тратится видеопамять. Когда мы создаем чисто ентити для уже существующего меша (CopyEntity) тогда тратится только совсем чуть-чуть оперативки и совсем не тратится видеопамять. В блице понятия меша и ентити разнесены слабо, что неправильно, я считаю. Хотя для новичков, кончено проще.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (06.04.2012)
Старый 06.04.2012, 14:36   #11
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Render World и Графический процессор видеокарты

Не слыхал ли кто о библиотеке для обработки некоторых расчетов из главного цикла(те что предназначены для цп) на графическом процессоре для блица? Или возможно наоборот. Подключить свободные ресурсы центрального процессора для помощи в построении графических изображений? п.с. Задело

И еще один вопрос не по теме. Есть огромный ландшафт. Его форма хранится в файле и только небольшая часть видимая юзеру сидит в ОЗУ. Как будет рациональнее с точки зрения оптимизации, врубать хайд ентити для всех кусочков что видел юзер (ландшафт аля майнкрафт) или делать полный перерасчет ландшафта в моменты передвижения с чанка на чанк? Просто в блице никак нельзя сделать работу над главным циклом в 2-а потока. Или можно? Была только одна мысль, написать функцию, какая будет подгружать кусочек недогруженного чанка. Что то типа имитации 2-х потоков....
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 15:00   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Render World и Графический процессор видеокарты

Просто в блице никак нельзя сделать работу над главным циклом в 2-а потока.
была где то библиотека.

чтобы врубать / вырубать хайдентити надо их все сначала загрузить. По памяти просядите, батенька. если ландшафт на самом деле огромный. Да и неправильно это идеологически, пишите на блице казуалки, он для этого создавался. А то некоторые берутся писать всякие там шутеры на тетрисовом двиге, или 3Д ртс
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 15:24   #13
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Render World и Графический процессор видеокарты

Сообщение от HolyDel Посмотреть сообщение
3Д ртс
Как ты угадал?

L.D.M.T. уже посоветовал насчет многопоточности. А это как ты говоришь 3Д ртс от казуалок (имхо) отличается лишь сложной оптимизацией.
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 15:53   #14
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Render World и Графический процессор видеокарты

Слушайте, а если я буду так делать:
;-----------------------------LoadEntity------------------------------
Function LoadEntity(FileMesh$)
        Mesh=LoadMesh(FileMesh$)
Local MeshEntity=CopyEntity(Mesh) 
        FreeEntity Mesh
        Return MeshEntity
End Function 
;-----------------------------LoadEntity------------------------------

;--------------------------LoadAnimEntity---------------------------
Function iSetAnimKey(mesh,key)
    SetAnimKey( mesh, key )
    For i = 1 To CountChildren( mesh )
        iSetAnimKey( GetChild( mesh, i ), key )
    Next
End Function

Function animateAllChilds( mesh )
    Local length% = AnimLength( mesh )
    For i = 1 To length ;- 1
        SetAnimTime( mesh, i, 0 )
        iSetAnimKey( mesh, i )
    Next
    For j = 1 To CountChildren( mesh )
        ent = GetChild( mesh, j )
  If ent<>0  
            If CountChildren(ent)>0 Then animateAllChilds(ent )
      AddAnimSeq( ent, length )  
  EndIf  
    Next
End Function

Function LoadAnimEntity(FileAnimMesh$)
         MeshAnim=LoadAnimMesh(FileAnimMesh$)
Local MeshAnimEntity=CopyEntity(MeshAnim) 
        animateAllChilds(MeshAnimEntity)
        FreeEntity MeshAnim
        Return MeshAnimEntity
End Function
;------------------------------LoadAnimEntity--------------------------

MeshEntity=LoadAnimEntity("AnimEntity.b3d")

MeshEntity=LoadEntity("Entity.b3d")
Я оптимизирую таким образом? или FreeEntity только Entity удаляет?
__________________
Острый психоз- это когда вы разговариваете с кошкой.
Острый галлюцинаторный психоз - вы говорите с кошкой, которой не существует.
Паранойя - вы боитесь ляпнуть лишнего при кошке.
Шизофрения - иногда у вас появляется кошка, которая разговаривает.
Неврастения - вы жалуетесь кошке, она молчит, игнорирует вас и это для вас невыносимо!!!
Навязчивый невроз - вы уверены, что кошка не одна и они что-то замышляют!
(Offline)
 
Ответить с цитированием
Старый 06.04.2012, 17:24   #15
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Render World и Графический процессор видеокарты

только Entity удалит. останется ссылка на меш во второй копии.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Markova (06.04.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com