Hi !
Featured games (88)
games approved by the League of Dukes
Games in Showcase (679)
Games in Android Showcase (195)
games submitted by our members
Games in WIP (735)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: 1 2 [3] 4 5 ... 10
 on: 2016-05-31 19:12:42 
Started by BurntPizza - Last post by theagentd
Did another test with multithreaded OpenGL, this time with texture streaming. I decided to quickly investigate a problem where the texture streaming was seemingly being limited to loading 1 texture per rendered frame, even though there shouldn't be any synchronization with the rendering thread.

I made a small program that continuously allocates a texture, maps a PBO and fills it with zeros, calls glTexImage2D() to copy data from the PBO to the texture object, then finally waits for completion using 3 different methods (glFinish() (on the streaming thread), glClientWaitSync() and glGetSynci()+sleep(1)). All 3 suffered from the same problem: glFinish() would block, glClientWaitSync() would block and glGetSynci() would not be signaled until rendering had completed it seems. It seems like despite them being two separate contexts, one dedicated to texture streaming, the commands all go to the same command queue, forcing the texture streaming to wait for the rendering as well. It's clear that the texture streaming is done in parallel (there's no FPS impact), so their scheduling/the way the driver handles them seems to be the problem, so completion isn't signalled until the render context is done drawing stuff. By uploading 128x128 textures repeatedly while drawing 20 000 000 points per frame at around 5 FPS, I got this horrible output:

Texture 102 of thread 0 uploaded in 214.679ms (215x sleep(1)).
Texture 103 of thread 0 uploaded in 312.657ms (313x sleep(1)).
Texture 104 of thread 0 uploaded in 243.695ms (244x sleep(1)).
Texture 105 of thread 0 uploaded in 405.697ms (406x sleep(1)).
Texture 106 of thread 0 uploaded in 196.509ms (197x sleep(1)).
Texture 107 of thread 0 uploaded in 402.656ms (403x sleep(1)).
Texture 108 of thread 0 uploaded in 201.653ms (202x sleep(1)).
Texture 109 of thread 0 uploaded in 0.644ms (1x sleep(1)).
Texture 110 of thread 0 uploaded in 485.148ms (167x sleep(1)).
Texture 111 of thread 0 uploaded in 250.718ms (251x sleep(1)).
Texture 112 of thread 0 uploaded in 442.669ms (443x sleep(1)).
Texture 113 of thread 0 uploaded in 152.663ms (153x sleep(1)).
Texture 114 of thread 0 uploaded in 362.389ms (195x sleep(1)).
Texture 115 of thread 0 uploaded in 147.939ms (148x sleep(1)).
Texture 116 of thread 0 uploaded in 544.271ms (250x sleep(1)).

while the same thing when drawing 20 000 points @ 2700 FPS gave me:
Texture 7368 of thread 0 uploaded in 0.795ms (1x sleep(1)).
Texture 7369 of thread 0 uploaded in 0.785ms (1x sleep(1)).
Texture 7370 of thread 0 uploaded in 0.789ms (1x sleep(1)).
Texture 7371 of thread 0 uploaded in 0.793ms (1x sleep(1)).
Texture 7372 of thread 0 uploaded in 0.816ms (1x sleep(1)).
Texture 7373 of thread 0 uploaded in 0.76ms (1x sleep(1)).
Texture 7374 of thread 0 uploaded in 0.827ms (1x sleep(1)).
Texture 7375 of thread 0 uploaded in 0.796ms (1x sleep(1)).
Texture 7376 of thread 0 uploaded in 0.807ms (1x sleep(1)).
Texture 7377 of thread 0 uploaded in 0.792ms (1x sleep(1)).
Texture 7378 of thread 0 uploaded in 0.814ms (1x sleep(1)).
Texture 7379 of thread 0 uploaded in 0.787ms (1x sleep(1)).
Texture 7380 of thread 0 uploaded in 0.779ms (1x sleep(1)).
Texture 7381 of thread 0 uploaded in 0.794ms (1x sleep(1)).
Texture 7382 of thread 0 uploaded in 0.808ms (1x sleep(1)).
Texture 7383 of thread 0 uploaded in 0.795ms (1x sleep(1)).
Texture 7384 of thread 0 uploaded in 0.767ms (1x sleep(1)).
Texture 7385 of thread 0 uploaded in 0.812ms (1x sleep(1)).
Texture 7386 of thread 0 uploaded in 0.795ms (1x sleep(1)).
Texture 7387 of thread 0 uploaded in 0.809ms (1x sleep(1)).
Texture 7388 of thread 0 uploaded in 0.792ms (1x sleep(1)).

Hence, it's clear that it's impossible to get completely separated rendering and texture streaming. I will try to rework our texture streaming a bit to lessen the impact of this limitation in the future. If I have a big PBO allocated already, it's a waste to upload a 128x128 mipmap and then sync with the rendering. Instead, instead of waiting for the job to finish, I will simply continue uploading textures to the PBO's free sections, only stopping if I run out of PBO memory. Once an action completes, the memory us used in the PBO can be reused again. If I have enough space in my PBO to a 4096x4096 RGBA texture (64MB), I can also upload a whooping 1024 128x128 texture in one frame as well, and I'm fairly sure the actual streaming from the harddrive will be the problem at that point. =P

It'll be interesting to see how this performs compared Vulkan dedicated transfer queues. Presumably those will be completely independent of the rendering queue(s) and won't have this problem.

 on: 2016-05-31 18:11:01 
Started by Ecumene - Last post by Ecumene
A framework or a wrapper?

Those are some very arbitrary definitions, but I'm guessing a wrapper and framework?

It depends. In the main repository (jgloom) you've got OpenGL objects wrapped into interfaces and containers for manipulating them, then in the other (jgloom-io) it's more like a framework for loading file formats and selecting draw call methods, stuff like that (which is not currently being worked on). This thread is mainly a placeholder till we can get our Travis-CI server setup and github wiki, seeing if anyone's interested.

 on: 2016-05-31 18:05:07 
Started by Hydroque - Last post by Ecumene
But that's UNLESS your engine has features that we've never seen before, or if your engine can boost Java's reputation in the game development community, like what jME did several years ago. We certainly look forward to something revolutionary.

(I'd hate to derail OP's thead but...)

Why put that feature in an engine? What we need is a library for physics, graphics, audio, input, whatever and people mesh whatever they need in the middle, making one all-encompassing piece of software to me sounds overkill.
If you don't like how your graphics, physics, audio engine does things use another one or make a pull and change it.

As for learning from re-inventing the wheel, I'm all for it but it won't make you a better game dev, a better game engine programmer maybe.

 on: 2016-05-31 17:23:26 
Started by BurntPizza - Last post by Opiop
I graduated high school yesterday  Cheesy
That first day of "freedom" after high school is finished was amazing. Enjoy your summer! And do good in college if you're going, study hard and all that.

 on: 2016-05-31 17:15:02 
Started by vbrain - Last post by vbrain
Click to Play

One Life Quest is an RPG match-4 game. For every match you perform, your character fires an arrow that attacks the monster you're fighting. You can upgrade your bows, damage, health increase, and there are even amulets and artifacts that can give you an advantage in the game.

When I first started this game I had a different idea of how I wanted it to be. I had a story in mind that could go with everything, but I decided against doing that because of how complex it would become.

Please tell me what you think about it.


<a href=";hl=en_US&amp;start=" target="_blank">;hl=en_US&amp;start=</a>

 on: 2016-05-31 17:02:16 
Started by Fishbreath - Last post by Fishbreath
Drat, I thought I'd solved that one. Must have reintroduced it somewhere.

I'm on the road today, but I'll take a look at it tonight (and add a test for it).

Edit: fixed it! Newly-released has it.

 on: 2016-05-31 16:51:00 
Started by TGStudiosDE - Last post by VaTTeRGeR
In case you are planning on attending university soon:

There are almost always some positions available that involve either programming or working with computers on different levels.
I got a job as student assistant this year (creating an simulation interface for scheduler/workload interaction => research and java programming)

You'll have a lot of freedom and it is well paid in relation to the hours you'll be working (36h ~> 420€).
You do not need anything formal, you have pretty good chances to find something if you know c++/matlab/java/whatever_needed and everything surrounding that well.
This isn't always very exiting stuff tho, you could also end up doing annoying stuff, but it'll definitely be awesome if you find something that overlaps with your interests.

This won't get you into "IT" Huh but it's a recommendable thing to do while you're studying.

 on: 2016-05-31 14:05:40 
Started by Fishbreath - Last post by Jono
I've encountered a bug with the latest build (one after 0.2.5b). When playing with human (attackers) vs AI (defenders) the board state send with opponent-move commands stops including the king after the first capture.


move /4tttt3/5t5/3t7/t4T4t/t3TTT3t/tt1TTKTT1tt/t1T3T3t/t4T4t/4Tt5/11/3ttttt3/
opponent-move d11-d9 /4tttt3/5t5/3t7/t4T4t/t3TTT3t/tt1TT1TT1tt/t1T3T3t/t4T4t/3t1t5/11/4tttt3/

The opponent-move captured a piece at d10 (not the king), but the king still disappeared from the next board state.

 on: 2016-05-31 13:38:26 
Started by TGStudiosDE - Last post by Opiop
We use X and Y libraries and you need to have experiences with all C-type languages. Oh and know Java and this library. You must understand the flow of program creation too. If you don't we won't hire you.

This field is full of idiotic people. You will need to learn to do what your asshole says first, meaning get a real job first that is consuming to you. Do that for a year and you will learn. Then come when you are 18 you'll be a little more bit ready.

Have you ever actually tried applying for jobs in this field? I can tell you right now you aren't going to be hired solely based on if you know how to use 'x' library.

 on: 2016-05-31 12:25:58 
Started by TGStudiosDE - Last post by Drenius
Not questioning the actual meaning, what exactly do you consider to be in "the IT section"?

Your signature says you are in Germany, I have to assume that is where you are going to stay for the moment, so that is an entirely different thing to consider; finding a job and required education is a slightly different thing than it would be in, say, the US.

Generally, try to figure out what exactly you want to start in. Then look what is required, what of it you have.
Internships are also always a good option, be it even for figuring out what you want.

Also it would be useful if you mentioned what education you currently have and which you are currently at.
With 17 years, you are technically old enough for Abitur, from which studying would be a recommendable option, or did you go a different path?

Pages: 1 2 [3] 4 5 ... 10
DarkCart (30 views)
2016-05-28 17:30:33

Hydroque (44 views)
2016-05-26 05:45:46

Mac70 (55 views)
2016-05-24 12:16:33

theagentd (58 views)
2016-05-14 09:38:35

theagentd (92 views)
2016-05-10 13:37:41

theagentd (99 views)
2016-05-10 13:33:46

IanParcs (121 views)
2016-04-18 05:18:53

KaiHH (117 views)
2016-04-17 23:35:41

KaiHH (139 views)
2016-04-15 03:43:58

theagentd (145 views)
2016-04-13 17:16:17
FPS Camera Tutorial
by Hydroque
2016-05-21 20:40:58

Website offering 3D Models specifically for games for free
by vusman
2016-05-18 08:23:09

Website offering 3D Models specifically for games for free
by vusman
2016-05-08 23:50:56

Website offering 3D Models specifically for games for free
by vusman
2016-05-06 02:10:21

Website offering 3D Models specifically for games for free
by vusman
2016-04-29 03:56:17

List of Learning Resources
by SilverTiger
2016-02-05 00:39:47

List of Learning Resources
by SilverTiger
2016-02-05 00:38:38

List of Learning Resources
by SilverTiger
2016-02-05 00:35:50 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!