Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
97 user(s) are online (64 user(s) are browsing Forums)

Members: 1
Guests: 96

imagodespira, more...

Headlines

 
  Register To Post  

« 1 2 3 (4)
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Not too shy to talk
Not too shy to talk


See User information
@Hans

very interesting -- and i'm just now discovering your blog with tutorials. i really hope i have the opportunity to attend the amiga devcon next week!

-- eliyahu

"Physical reality is consistent with universal laws. When the laws do not operate, there is no reality. All of this is unreal."
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Not too shy to talk
Not too shy to talk


See User information
@Hans

Ok Thanks for the explanations now I can draw the cow with Nova
But there are still 2 problems

1) How can i draw a flat 2D quad upside the cow like the cosmos textured rectangle in old Cow3D ?

2) How can I disable the perspective ? (as the old Cow3D projection was very simple and was not shrinking among Z )

Again many thanks

Alain Thellier

note: dont know if its a bug but error=context->SetBlendMode(NULL,0,SrcFunc,DstFunc)); allways return 0 whatever are SrcFunc DstFunc



Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@thellier
Sorry for the delay (been travelling to Amiwest ).

1 Easiest would be to write a 2D shader that sets z to 1.0 and w to 1 (in the 4D output position). In 3D mode the screen edges are at -1 and 1 along the x and y axes, so a trifan of the correct size will fill the screen

2 You need an orthographic camera matrix instead of a projection one. Projection is done by dividing the position vector by it's 4th element(w). So a matrix that gives a constant w won't do projection (e.g set the matrix's bottom row to 0 0 0 1).

Hope that helps. I can give more detail later if needed.

Hans

http://hdrlab.org.nz/ - Amiga OS 4 projects, programming articles and more.
https://keasigmadelta.com/ - more of my work
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Quite a regular
Quite a regular


See User information
Once again, Daniel has updated OpenGL ES 2.0 for the new Warp3D Nova.

Warp3D Nova and Open GL ES 2.0 library are part of the Enhancer Software

From Daniel's latest update:

Quote:

OpenGL ES 2 (v1.10) for Warp3D Nova (AmigaOS 4)

A new update is available, for beta-testers at least ;)

- Memory management: removed MEMF_CLEAR flag from the memory-pool, just an unneccessary waste of cycles, everything is initialized anyway and a zero-fill isn't required.

- Fix, memory management: added semaphore protection for internal (de)allocations.

- Memory management: tuned the internal pool's puddle size.

- Decrunching the GLSL compiler requires almost no RAM anymore.

- Some more small optimizations (one of them will help speeding up another bigger optimization I'm planning ;) ).

- glFinish improved by immediately marking all internal objects that were buffered for submission as being available again. This speeds up the following drawing calls because those will find free internal objects faster.

- Fix: non-VBO drawing (glDrawArrays / glDrawElements called with pointers into client memory) was buggy, the render-pipe wasn't flushed if necessary which could lead to wrong objects being rendered.

- VBO locking improved not to read back data unless necessary. The primary result is probably not that intuitive: It speeds up *non*-VBO drawing quite a lot, to be exact by around factor 3! This is because Nova cannot render client memory data, so the library has to copy that into dedicated internal VBOs. Of course changes you do to your own VBOs are sped up too, but since you (hopefully) don't do that too often the overall performance gain won't be that noticable.

- The GLSL patcher now also handles the following functions so that they can be used even though they have been removed / replaced from the specs: texture2DProg, texture2DLod, texture2DProjLod, textureCubeLod.

Cheers,
Daniel



amigakit.com - the Amiga store
Links: www.amigakit.com | New Products | Enhancer Software
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Just can't stay away
Just can't stay away


See User information
@amigakit

BRILLIANT!

I am getting a very steady 90+FPS is AmiCraftNova 1.0.3

AmigaOne X1000.
Radeon RX550

http://www.tinylife.org.uk/
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@amigakit
Quote:
- VBO locking improved not to read back data unless necessary. The primary result is probably not that intuitive: It speeds up *non*-VBO drawing quite a lot, to be exact by around factor 3! This is because Nova cannot render client memory data, so the library has to copy that into dedicated internal VBOs. Of course changes you do to your own VBOs are sped up too, but since you (hopefully) don't do that too often the overall performance gain won't be that noticable.

That's an impressive boost to non-VBO rendering!

Hans

http://hdrlab.org.nz/ - Amiga OS 4 projects, programming articles and more.
https://keasigmadelta.com/ - more of my work
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Just popping in
Just popping in


See User information
https://youtu.be/hCAK7wtOxNk

System:
Sam460, 2GB Ram, Radeon7750, AmigaOS4.1 F.E. EntwicklerX 3D Engine wip, window 1280x960
1. Engine test in Warp3D SI (1.14) + MiniGL (2.20)
2. Level switch (needs a while)
3. change config to Warp3D NOVA
4. XEngine test in Warp3D NOVA (1.32) + OpenGLES2.0 (1.10)
5. Level switch (needs a while)

Still work in progress and the very first run of our work in progress game engine and our upcoming little game for AmigaOS4.1!

Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Just can't stay away
Just can't stay away


See User information
@imagodespira

Very impressive!

AmigaOne X1000.
Radeon RX550

http://www.tinylife.org.uk/
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@imagodespira

looks good.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@imagodespira
Nice! Seeems like Warp3D NOVA (1.32) + OpenGLES2.0 (1.10) gives 3-4 times the frame rate compared to Warp3D SI (1.14) + MiniGL (2.20)... and if I wasn't imagining things, it looked slightly prettier as well (although I'm not sure why - really need a side-by-side comparison).

Author of the PortablE programming language.
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Just can't stay away
Just can't stay away


See User information
amazing!

Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Just popping in
Just popping in


See User information
@ChrisH

"Really need a side-by-side comparison" is it always a technical difference? I mean when I watch graphics based on composition on A1 it always looks better to me. Another thing is I remember switching from a matrox card to newer 3D card a while back on another platform and noticing a reduction in IQ.

When comparing Warp3D to Composition in something like Wings Battlefield I prefer the latter while viewing blankers I prefer the OGL ones. Watching something similiar on the recent Nova also left me a bit ambivalent as far as IQ is concerned beacuse of smoother and better framerates on 3D and not only framerates because sometimes on other platforms you have microstuttering or frame times (which we rarely get on A1) as they call it nowdays which effect a dinamic impression. So I guess there is also a consideration of the still pic comparison and the fluid motion comparison.

A similiar thing happens to me when I visit forums like the ScummVM ones where they compare versions and talk about technical differences yet the Amiga versions always look much better to me

Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Not too shy to talk
Not too shy to talk


See User information
@imagodespira
Now it truly begin to looks nice and like a pleasant game
Good works
BTW please add a dragon : I so much love dragons

>Seeems like Warp3D NOVA (1.32) + OpenGLES2.0 (1.10) gives 3-4 times the frame rate compared to Warp3D
I agree from my own tests: when drawing in the better conditions for Warp3D (I mean a simple textured draw with no lighting nor pixels effects) then Nova is already 3.36 times faster
but the Nova superiority vs Warp3D should increase for more complex scene or effects...

Alain Thellier

Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Quite a regular
Quite a regular


See User information
Danlel has been commissioned by A-EON Technology Ltd to work on OpenGL ES 2.0 for Warp3D Nova.

He has now completed 11 updates since the initial version. Here is his latest update today:

Quote:

OpenGL ES 2 (v1.11) for Warp3D Nova (AmigaOS 4)

I picked up the pencil I dropped after successfully finishing up the initial version 1.0 for the 11th time now, so it's a new week with a new update once again :)

This time we got one fix and some real *massive* optimizations for a common-case scenario.

The fix: glViewport didn't always work correctly. A dumb typo made it falsely depend on the provided target window- / bitmap-height :P Thanks to Frank Menzel for reporting that one. Really wondering how this one could remain unnoticed for so long.

But now to the optimizations :)
It's all about non-VBO drawing commands. So what's that anyway you may ask?

OGLES2 allows you to draw your geometry either from GPU memory (VBO) or directly from your application's RAM (non-VBO). The latter is often used in older progs when VBOs weren't available, in stuff ported from OGL(ES)1, for simplicity, for vertex-data that constantly changes, etc.

In contrast, Nova only allows you to draw your stuff through VBOs. Therefore the OGLES2 wrapper has to create / update at least one VBO internally if you want to draw sth. from your application's RAM. So for the lib-user it looks as if he'd draw from his RAM directly, but in reality the wrapper turns everything into a VBO behind the scenes. And that VBO modification means that the data has to be uploaded to the GPU. Furthermore it means that the lib has to wait until that VBO is not used by the GPU anymore, which could be the case if you issued another non-VBO draw-command before.
OGLES2 has to do all that for every single non-VBO glDraw-command you issue, because it has to asume that your vertex data changed. There is no way to tell OpenGL "hey, don't worry, that data will remain unchanged for the next 1000 draw-calls".

As you may guess all this is a huge bottleneck. So I spent some time to improve that situation.
The basic idea is that it's actually faster to check the whole data for changes and to not upload anything if there's no change than to always upload. And instead of comparing the data I hash it and compare that hash only. The hashing function has been extremely optimized in 1.10 already (it's used internally for other things already). Anyway, that's the core idea, there's a bit more though.

Note: throughout the following lines I'll present the fps of the boing-ball-test if compiled *not* to use VBOs! So it's 1024 identical balls (about 800 triangles each) rendered using client memory vertex- / index-data.
Before it was very slow in that mode (more at Warp3D than W3D Nova niveau), especially with that big load (although the previous update already contained a nice speedup by around factor 3, as you probably remember). However this test situation can be considered a best-case scenario.

I also prepared a second version of that test, one that renders two different types of balls which use completely different vertex-/ index-data sets in an alternating way (ball type A, then type B, then A, B, ...). Triangle- and ball-count is the same as in test 1. This second test is used to somewhat simulate a worst-case scenario.

So, let's begin. With 1.10 we had the following results for those tests (on a sam460ex, low-end R7 250, default window size, all ca. values).
Variant 1: 3.3 fps
Variant 2: 3.3 fps

Optimization 1: client-RAM index-arrays are uploaded only if a data change has been detected.
Variant 1: 3.7 fps
Variant 2: 3.7 fps

Optimization 2: client-RAM vertex-arrays are uploaded only if a data change has been detected.
Variant 1: 16.0 fps
Variant 2: 3.7 fps

Wow :) Variant 1 becomes insane!
Interesting to note is that variant 2 isn't getting any slower (at least not measurable), despite the fact that it now computes a hash over 25kb of vertex-data (about 800 vertices, 32 bytes each) - and it does so 1024 times per frame for nothing... Yes, the hashing has been optimized indeed ;)

Optimization 3: instead of just one VBO for index- and vertex-arrays the library now manages a hole lot of such VBOs internally.
Variant 1: 15.9 fps
Variant 2: 12.5 fps

Not bad, hm? ;)

However there's one situation that doesn't benefit much from all this, namely when you render procedurally generated vertex data that changes all the time.
If you use glDrawElements then it's likely that at least the index-array-upload can be optimized away because in the common procedural use-case this will remain constant, but the always-changing vertex-data will not just not benefit from all this but might actually become slower than before because there's the additional hashing overhead now...

However, as we have seen at "Optimization 2" computing the hash is virtually for free - at least in those tests here, which, after all, throw around about 50 times (!) more vertices while issueing about 40 times (!) more draw-calls than the current "Wings Remastered" beta does in the most heavy loaded strafing-scenes... (and "Wings Remastered" will be the most heavy Warp3D game in existence). Just to give you an idea about what amounts of data this boing-ball tests is actually about...
So, if you stay within those limits the hashing overhead is definitely neglectable.

So compared to v1.10 the new v1.11 delivers a performance gain around factor 3.8 to 4.8 for common non-VBO situations!
And because it sounds even cooler:
Compared to v1.9 we have an improvement of an incredible factor 11.4 to 14.4!

Note: the actual performance gain highly depends on the size of the data you are about to draw with one draw-call. So don't expect that your numbers are identical to those above. But the overall order of magnitude will be around that.

Cheers,
Daniel



amigakit.com - the Amiga store
Links: www.amigakit.com | New Products | Enhancer Software
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@amigakit

Is that just a heads up that Daniel is still owrking on it, or is v1.11 already downloadable/within the Enhancer package?

People are dying.
Entire ecosystems are collapsing.
We are in the beginning of a mass extinction.
And all you can talk about is money and fairytales of eternal economic growth.
How dare you!
– Greta Thunberg
Go to top
Re: Interested in learning OpenGL ES 2 or Warp3D Nova?
Home away from home
Home away from home


See User information
@Raziel
Quote:
Is that just a heads up that Daniel is still owrking on it, or is v1.11 already downloadable/within the Enhancer package?

I'm pretty sure that 1.11 is yet to be released. You're being given a peek at what happens behind the scenes. Daniel has managed to get some impressive performance boosts. All stuff to look forward to in the next Enhancer pack update.

@imagodespira
Nice work!

Hans

http://hdrlab.org.nz/ - Amiga OS 4 projects, programming articles and more.
https://keasigmadelta.com/ - more of my work
Go to top

  Register To Post
« 1 2 3 (4)

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2023 The XOOPS Project