forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   xCreateInstance (http://forum.boolean.name/showthread.php?t=14984)

Randomize 05.07.2011 21:16

Ответ: xCreateInstance
 
Вложений: 2
Цитата:

Сообщение от .Squid (Сообщение 194327)
...
А то сейчас, я смотрю, вы и текстуры чистите, а потом опять их накладываете - беда...

Не придирайся к мелочам - это всё не важно. Всё делалось исключительно ради теста. Делал наскоро чтоб тупо работало.

Значит так. По поводу xClearWorld() и xReleaseGraphics()
Прикладываю аттач с примером и скрин ошибки.
Испытывал следующие варианты:
Код:

'xClearWorld() ' Ошибка
'xClearWorld(1, 0, 1) ' так тоже
'xClearWorld(1, 0, 0) ' так работает
'xReleaseGraphics() ' тоже ошибка


.Squid 06.07.2011 02:12

Ответ: xCreateInstance
 
Я не придираюсь.
Ты чистишь мир вместе с текстурами, а затем в цикле опять накладываешь текстуру (в переменной то адрес текстуры остался, в ноль она не сбрасывается).

С r704 твой пример работает.

burovalex 18.08.2012 23:02

Ответ: xCreateInstance
 
Вообще понравился пример!!! Супер!
Такая разница колосальная!!

Xors3d Engine version: 1.15.688.0 ( May 07 2011 )
OS: Microsoft Windows 7
4 CPUs: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz at 2128MHz (MMX, SSE, SSE2, SSE3)
RAM: 1908 MBytes. Paged memory: 3816 MBytes.
ATI Mobility Radeon HD 5730. VRAM: 1016 MBytes.

HWI
PHP код:

FPS61
TrisRendered
111132
DIP calls


shaderEmul
PHP код:

FPS16
TrisRendered
444528
DIP calls
374 

withoutShader
PHP код:

FPS5
TrisRendered
1000188
DIP calls
564 

FackingCopyEntity
PHP код:

FPS3
TrisRendered
1778112
DIP calls
37796 

И хочу попросить исходник, очень хочется на код глянуть и разобраться как этим пользоваться :SOS:

burovalex 18.08.2012 23:17

Ответ: xCreateInstance
 
Я накидал, но я пока плохо разбираюсь в шейдерах эффектах.., и меши у меня просто исчезают

Код:

Include "xors3d.bb"
xGraphics3D 800,600,32,1,1

camera = xCreateCamera()
xPositionEntity camera, 0,2,-20

light = xCreateLight()

Global sp=xCreateSphere(16)
tx=xLoadTexture("accept.png")
xEntityTexture sp,tx
Global HWIFX=xLoadFXFile("hwinstancing.fx")
xEntityFX sp,HWIFX
xSetEffectTechnique sp, "Instancing"
xSetEffectMatrixSemantic sp,"MatViewProj",WORLDVIEWPROJ
xSetEffectMatrixSemantic sp,"MatWorld",WORLD

Dim c(10000)
For i=1 To 10000
c(i)=xCreateInstance(sp)
xPositionEntity c(i),Rnd(-3,3),Rnd(0,0.5),Rnd(-3,3)
Next

Global frame, xframe, time
xframe=xMillisecs()-1
While Not xKeyHit(1)
frame=xMillisecs()
xRenderWorld()


xText 5,5,time
xFlip

time=1000/(frame-xframe)
xframe=frame
Wend
End


FREE MAN 19.08.2012 00:05

Ответ: xCreateInstance
 
Посмотри в стандартных примерах, как это делать.
xEntityFX sp,HWIFX так не применишь эффект к объекту.
Надо так xSetEntityEffect sp, HWIFX

FREE MAN 19.08.2012 11:40

Ответ: xCreateInstance
 
Цитата:

Сообщение от burovalex (Сообщение 236624)
Я накидал, но я пока плохо разбираюсь в шейдерах эффектах.., и меши у меня просто исчезают

На кокой конфигурации компьютера делаешь?
Хардвэрный инстенсинг не все видяхи держат.

burovalex 19.08.2012 20:56

Ответ: xCreateInstance
 
Спасибо Phyton! Всё заработало!
Вот только разница в фпс не большая
вывел 10к сфер 16-го порядка
CopyEntity - 20 fps
Instancing - 30 fps

Можно ли на сферы сделать один сурфейс??

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

FREE MAN 19.08.2012 21:04

Ответ: xCreateInstance
 
Цитата:

Сообщение от burovalex (Сообщение 236697)
Спасибо Phyton! Всё заработало!
Вот только разница в фпс не большая
вывел 10к сфер 16-го порядка
CopyEntity - 20 fps
Instancing - 30 fps

Можно ли на сферы сделать один сурфейс??

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

Эээ, ты чего так за махнул та! 10К сфер это перебор, лучше делать на один инстанс примерно на 200 объектов, думаю так лучше будет.

burovalex 19.08.2012 22:48

Ответ: xCreateInstance
 
ну хз, лучше не стало, (может не правильно) переделал так:

Код:

Global sp=xCreateSphere(16)
tx=xLoadTexture("accept.png")
xEntityTexture sp,tx
Global HWIFX=xLoadFXFile("hwinstancing.fx")
xSetEntityEffect sp,HWIFX
xSetEffectTechnique sp, "Instancing"
xSetEffectMatrixSemantic sp,"MatViewProj",WORLDVIEWPROJ
xSetEffectMatrixSemantic sp,"MatWorld",WORLD
xHideEntity sp

Dim c(10000)
Dim s(500)
For y=0 To 90
s(y)=xCopyEntity(sp)
xHideEntity s(y)
        For i=1 To 100
        c(i*y)=xCreateInstance(s(y))
        xPositionEntity c(i*y),Rnd(-3,3),Rnd(0,0.5),Rnd(-3,3)
        xScaleEntity c(i*y),0.1,0.1,0.1
        xShowEntity c(i*y)
        Next
Next

Получилось 9к сфер, а фпс 26

HolyDel 20.08.2012 18:07

Ответ: xCreateInstance
 
у тебя сколько треугольников выводится? сколько треугольников на сферу? так-то чем меньше трисов - тем больше эффекта от инстансинга.

FREE MAN 20.08.2012 19:18

Ответ: xCreateInstance
 
burovalex Еще раз спрашиваю! Какая у тебя конфигурация ПК? возможно проблема не в инстансиге, а в твоем компе...
посмотри еще раз как в примерах сделано, у тебя где то косяк в коде это точно...
Опиши задачу для чего тебе нужен инстансинг? лес да пожалуйста, стандартный пример ксорса.
На фпс не бросаться пример без оптимизаций!!!

FREE MAN 20.08.2012 20:18

Ответ: xCreateInstance
 
Цитата:

Сообщение от burovalex (Сообщение 236720)
ну хз, лучше не стало, (может не правильно) переделал так:

Код:

Global sp=xCreateSphere(16)
tx=xLoadTexture("accept.png")
xEntityTexture sp,tx
Global HWIFX=xLoadFXFile("hwinstancing.fx")
xSetEntityEffect sp,HWIFX
xSetEffectTechnique sp, "Instancing"
xSetEffectMatrixSemantic sp,"MatViewProj",WORLDVIEWPROJ
xSetEffectMatrixSemantic sp,"MatWorld",WORLD
xHideEntity sp

Dim c(10000)
Dim s(500)
For y=0 To 90
s(y)=xCopyEntity(sp)
xHideEntity s(y)
        For i=1 To 100
        c(i*y)=xCreateInstance(s(y))
        xPositionEntity c(i*y),Rnd(-3,3),Rnd(0,0.5),Rnd(-3,3)
        xScaleEntity c(i*y),0.1,0.1,0.1
        xShowEntity c(i*y)
        Next
Next

Получилось 9к сфер, а фпс 26

Сделай проще, должно работать.

amount = 100
For i = 0 To amount
copy_entity = xCreateInstance(entity)
x# = Rand(0, 1500)
z# = Rand(0, 1500)
xPositionEntity copy, x, 0, z
Next

burovalex 20.08.2012 21:50

Ответ: xCreateInstance
 
Я же выше участвовал в тесте.
120к треугольников. Я подставил кубики.
Но все равно разница с топовым тестом очень большая.
У него 61 фпс выдает, а у меня 40-43

Xors3d Engine version: 1.15.688.0 ( May 07 2011 )
OS: Microsoft Windows 7
4 CPUs: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz at 2128MHz (MMX, SSE, SSE2, SSE3)
RAM: 1908 MBytes. Paged memory: 3816 MBytes.
ATI Mobility Radeon HD 5730. VRAM: 1016 MBytes.

FREE MAN 20.08.2012 22:11

Ответ: xCreateInstance
 
Цитата:

Сообщение от burovalex (Сообщение 236774)
Я же выше участвовал в тесте.
120к треугольников. Я подставил кубики.
Но все равно разница с топовым тестом очень большая.
У него 61 фпс выдает, а у меня 40-43

Xors3d Engine version: 1.15.688.0 ( May 07 2011 )
OS: Microsoft Windows 7
4 CPUs: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz at 2128MHz (MMX, SSE, SSE2, SSE3)
RAM: 1908 MBytes. Paged memory: 3816 MBytes.
ATI Mobility Radeon HD 5730. VRAM: 1016 MBytes.

А стандартные примеры инстансинга сколько выдают фпс?
Да и еще почему у тебя стоит старая версия 688? поставь 750, скачай с официального сайта ксорса триалку там в новой версии есть интересные примеры... у меня 80 фпс выдает без проблем!

burovalex 21.08.2012 21:00

Ответ: xCreateInstance
 
Спасибо! Буду качать, хотя вроде тоже с офсайта качал..
Рассмотрю подробнее примеры!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot