Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (603)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1]
1  Discussions / General Discussions / Google Summer of Code proposal on: 2010-03-20 11:13:53
Hi all,

Gephi organization, open-source graph visualization plaform is looking for students application about a Shader-based visualization engine.

You may already know how Google SoC works, basically a student will receive payment (5000$) for working on a mentoring open-source projects.

Some facts:
- We are Java and JOGL
- Our current visualization engine is compatible OpenGL 1.5 and can already draw hundred thousand elements at least.
- We use Octree, LOD and culling

Short version of the Shader Engine Proposal:
---------------------------------------------------------------
The aim is to create a basic 3D engine using suggested technologies and use it for drawing as many nodes and edges as possible. Moreover the engine should guarantee the possibility to add an interaction layer to develop the network exploration.

Existing Gephi 3D engine is intended to be used with as much hardware as possible and thus doesn’t profit from GPU so much. The particularity of a network visualization 3D engine is the need to draw a huge amount of very basic shapes (sphere or cube for nodes and lines for edges). For a traditional "direct" engine, drawing millions of objects, even if it is the same object costs millions of loop iterations and CPU-to-GPU transfers. When using shaders, graphics are directly processed by the GPU and therefore speed-up rendering.

We suggest this draft roadmap:

* Get started with loading and executing vertex and fragment shaders within a JOGL routine in a sample application.
* Code impostors for nodes, work on sphere appearance with ambient occlusion technique. The molecular visualization can be a great source of inspiration.
* Code basic geometry and camera positioning to allow displacement and zoom.
* Build the architecture to manage node updates (position update, select, color, size).
* Try to draw edges with GPU.
* Propose nice post-processing effects. Try to make a glow effect around spheres.
---------------------------------------------------------------

Instructions to apply here

Quick demonstration video

I'm interested with comments about feasability of this project and so on  Wink

2  Java Game APIs & Engines / Tools Discussion / Re: Rich client platforms & IDE agnosticism on: 2010-02-26 17:00:03
Quote
Is there anyone that has used the Netbeans platform and has any experiences to share?

I'm developping Gephi, based on top of Netbeans Platform and using JOGL. I'm familiar with Netbeans Platform for more than one year now and I can say it is a very comfortable place to develop a Swing & JOGL application. In two days I was able to start with the platform, thanks to efficient documentation, in one week I had integrated JOGL and in one month I had a cuple of modules that were using Netbeans API.

- API is well-documented, and you will not need everyhting. See http://bits.netbeans.org/dev/javadoc/index.html
- Have a look at Netbeans OpenGL Pack
- From Netbeans, in one click, I can build a Windows executable, a Mac OS application and a Java Webstart bundle.
3  Games Center / WIP games, tools & toy projects / Re: Gephi - Graph visualization platform using JOGL on: 2010-02-19 15:07:43
Quote
I haven't tried it yet, but you need to make an improvement in your website.  It took me a while to figure how to download it. 

What about the huge "Download" button on the home page ? Couldn't be easier I think.

Quote
OpenCL could be an interesting route too. I suppose one of the bigger problems Gephi is facing is calculating the positions of the nodes while keeping the data on the GPU? (This would map very well to OpenCL since you can share buffers between GL and CL

Yes I agree, calculating the positions of the nodes, called "Layout" requires a lot of computation and using GPU could help a lot, as explained in this article (A. Godiyal, J. Hoberock, M. Garland, and J. C.Hart. Rapid Multipole Graph Drawing on the GPU. In Graph Drawing, volume 5417 of LNCS, pages 90–101. Springer, 2009.). Your demo is impressive. So if I move to JOGL2, which is in the task list, I could use OpenCL with ease ?

Quote
Is it possible to use it in an Eclipse RCP application too? It seems very interesting
Well I don't think so. Go Netbeans dude !  Wink
4  Games Center / WIP games, tools & toy projects / Gephi - Graph visualization platform using JOGL on: 2010-02-18 14:52:15
Hi all, I would like to introduce Gephi, the graph visualization platform I'm developing. Gephi is open source and runs on Windows, Mac OS X and Linux.

Thanks to our JOGL-based rendering engine, we can display large graphs and provide real-time interaction. Graphs larger than 100 000 elements are well supported, but we plan to redevelop the engine using GLSL, with 1M elements target. If you have suggestions about that point, you're welcomed. I think displaying so much elements is really an interesting challenge.

Technology highlight:
* Octree and LOD for high-level optimization
* Basic thread pooling for concurrent operations
* Customizable text rendering and objects selection
* Hi-res screenshots

Download: http://gephi.org

Thanks for any feedback!


5  Game Development / Shared Code / Re: Modern3D: low-level shader-centric 3D graphics library on: 2009-10-25 20:30:23
Wow dude that is awesome. The only way to have good performance these days with modern GPU is to use Shaders. We definitively need library like this.

What performance boost did you measure using Modern3d for Java2D drawing ?
Do you plan to support Geometric shaders ?

I'll rewrite sooner or later my 3d engine using shaders, I draw graphs, nothing complicated expect thousands of thousands lines and spheres, your library could be a great help !

Thanks again, great job !

6  Game Development / Shared Code / Re: PureSwing on: 2009-10-25 20:20:08
Great job man, I like your approach and I'm curious what we could do using PureSwing and JOGL.
7  Java Game APIs & Engines / JOGL Development / Re: Google Summer of Code - Shader Engine on: 2009-03-27 16:25:17
The role of data structures is indeed very important, I chose rather a static octree structure than dynamic octree or bounding boxes. You can see a screenshot of our octants.

Firstly, due to the fact objects are rarely moving in a continuous movement, we can’t use neighborhood of an octant to guess where could be an object which is not in his octant anymore. Octrees or bounding boxes allows varying height of the tree according to object’s count in leaves. In the context of the dynamic graph visualization we are doing, I think it’s not possible to maintain these trees efficiently. Actually I didn’t found any optimal solution for the highly dynamic context of data. I believe it is quite different from building maps or levels, which fits in static structures, for instance in video games.

However our performances are good and scalable. When visualizing the whole network is slow, zooming on some parts remains always fast. In addition, Updates of the structure represents very few computing compared to the OpenGL display routines.
8  Java Game APIs & Engines / JOGL Development / Re: Google Summer of Code - Shader Engine on: 2009-03-23 15:54:47
Do you plan to use any system of spatial subdivision? some view frustum culling?

I already use several high level optimisation like spatial subdivision (Octree), level of detail and frustum culling. Because we have strong requirements like dynamic update some other high-level optimization would be counter productive because the world has to be updated too frequently. Indeed from one frame to another, every object could have changed its position.
When profiling my software I see that more than 80% of time is spent in display loops (OpenGL calls), thus I think some optimization should be done there, and Shaders would be the solution I guess.

I don't really understand the summer of code google thing.
Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source software projects, fund over a three month period (4500USD per student). Through this, accepted student applicants are paired with a mentor from the participating projects, thus gaining exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits.
9  Java Game APIs & Engines / JOGL Development / Google Summer of Code - Shader Engine on: 2009-03-22 09:44:00
Hi all,
I'm the creator of the Gephi project, an open-source network visualization software using JOGL. The project have been accepted as a mentoring organization by Google for the Summer of Code. I think I have an interesting proposal to share here: Shader Engine. You may already know how Google SoC works, basically a student will receive payment for working on mentoring open-source projects.

For interested students, see our forum. You can also suggest ideas, until April 3 however. Thanks.


Here is the short version of the proposal:
---------------------------------------------------------------
This proposal is an experimental work about drawing large networks using GPU Shaders technology to improve performances and scalability. The aim is to create a basic 3D engine using suggested technologies and use it for drawing as many nodes and edges as possible.

Existing Gephi 3D engine is intended to be used with old hardware and so don’t profit from GPU revolution. Basically the engine draw only very basic shapes (sphere or cube for nodes and lines for edges), but a LOT of them. Drawing millions of objects, even if it is the same object is currently far from possible.

Shaders technologies have interesting features for our topic. For instance Geometry Shaders and (Pseudo-)Instancing techniques enhance performance when duplicating objects. Other techniques could be explored to reduce the amount of needed vertices or computing.

We suggest this draft roadmap:

    * Getting started with loading and executing vertex and fragment shaders within a JOGL routine in a sample application.
    * Try pseudo-instancing techniques for duplicating an existing shape, for instance a sphere.
    * If available, use Geometry Shaders to implement an instancing test case.
    * Try to create a Shader which will help to reduce sphere mesh size. For instance see if it is possible to create a sphere from only few triangles.
    * Experimentation for increasing edge drawing performance using Shaders.
    * Propose nice post-processing effects if you like!
---------------------------------------------------------------

I'm interested with comments about feasability of this project and so on  Wink
10  Java Game APIs & Engines / JOGL Development / Re: A simpler FPSAnimator on: 2009-03-12 09:09:39
This is a nice hack, it works on my hardware but it also have some drawbacks. Because it runs as fast as possible the CPU consuming is high. I'm not sure it really blocks on swapBuffers(), since CPU is almost at 100% (rather than ~40%) with my or FPSAnimator.
11  Java Game APIs & Engines / JOGL Development / A simpler FPSAnimator on: 2009-03-11 17:23:56
Hi all, I know this subject has already been discussed often. However I didn't find a clear argued answer. This post is specially oriented for performance guru like me and people who are looking for an FPSAnimator set in mode ‘schedule at fixed rate’ with a setable FPS value.

What I collected on other forum thread :
* FPSAnimator is good for almost everybody. I agree.
* It is not cross-platform and seems to be unstable.
* Active rendering technique may not be as secure as the listener one.
* Using nano time may waste CPU cycle and we don’t really need this kind of resolution.
* Using Thread.sleep() is wasting a lof of CPU cycles.

When looking into FPSAnimator code I’ve seen it is synchronized and based on a java.util.Timer. It actually doesn’t measure the time needed for executing the display and use the timer queue mechanism. I’ve though damn this is pretty complicated for what I want to achieve. Basically I need a timer which doesn’t mind if the task is taking longer than the period. I think we can do this with a simple wait(period).

What do you think about this draft class ?
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
public class SimpleFPSAnimator extends Thread {

    private GraphDrawable drawable;
    private long delay;
    private AtomicBoolean animating;
    private final Object lock = new Object();

    public SimpleFPSAnimator(GraphDrawable drawble, int fps) {
        super("SimpleFPSAnimator");
        this.drawable = drawble;
        this.animating = new AtomicBoolean();

        setFps(fps);
    }

    @Override
    public void run() {
        animating.set(true);

        try {
            while (animating.get()) {
                long startTime = System.currentTimeMillis();
                drawable.display();
                long timeout;
                while ((timeout = delay - System.currentTimeMillis() + startTime) > 0) {
                    //Wait only if the time spent in display is inferior than delay
                    //Otherwise the render loop acts as a 'as fast as you can' loop
                    synchronized (this.lock) {
                        this.lock.wait(timeout);
                    }
                }
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public void shutdown() {
        animating.set(false);
    }

    public boolean isAnimating() {
        return animating.get();
    }

    private void setFps(int fps) {
        delay = (long) (1000.0f / (float) fps);
    }
}


I precise I don’t care about thread-safety, I only have one GLAutoDrawable to display and a unique controller manages the Animator. It is better to use this class with a GLCanvas because it doesn't use special mechanism of Animator to paint GLJPanel (see Animator source).
12  Java Game APIs & Engines / JOGL Development / Enable software rendering in JOGL on: 2008-09-09 11:31:27
Hi all,

how can I force software rendering in JOGL ?

I'm using GLJPanel and I want to have a software fallback in my software.

Other question, I know TextRenderer wouln't work with a OpenGL 1.1 version (sofware), is it a workaroud to render TextRenderer in software as well ?


Thanks
13  Java Game APIs & Engines / JOGL Development / Re: Swing Component above JOGL on: 2008-07-24 13:11:16
Yes GLJPanel should work fine with this. I particulary remember a Sun demo where some panels where in foreground and background.

At least it works for me. I put the GLJPanel in null layout setLayout(null); and use setBounds() to set the position of the panel.

Note I use this instructions to refresh when components are added/removed

1  
2  
3  
gljpanel.add(mycomponent);
mycomponent.addNotify();
mycomponent.validate();
14  Java Game APIs & Engines / JOGL Development / Resize and context thread on: 2008-04-17 16:46:08
Hello all ! I'm using GLJPanel and the RC8 version of JOGL.

My GLJPanel is embedded in a Swing application. When I resize the frame the GLJPanel is resized and repaint, normal.

My display is controlled by a scheduler, which execute as much as possible tasks in a parallel way and finally call the real display(). Actually one of these tasks is calculate the frustum and require the OpenGL thread to be able to enter in OpenGL Select mode. Because these tasks are executed in threads, the context is makeCurrent before the tasks start and is release at the end. Concerning the display thread it release the context before the tasks start and makeCurrent again after they end.

When I resize very fast my Frame I experience an Exception Context not current on current thread. It happend when I try to release the context from the display thread (hence before the compute frustum task.)

I assume when you rezise fast the frame, severals events are created and so several calls to paint follow. I assume because the task thread can be started severals times without the time to finish, the context thread could be still on the task thread when the next paint call will try to release it.

How do you think I can handle this problem ?

Thank you.
15  Java Game APIs & Engines / JOGL Development / Re: Write a JPanel to a Texture with TextureRenderer on: 2008-04-07 18:11:07
Thank you all, with addNotify() and setSize() the JPanel is drawn into the texture. I also use print() instead of paint(), which do an Exception in JOGL when setSize() is defined.

Here is my code for creating the texture

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
TextureRenderer renderer = new TextureRenderer(64,64, true);
     
JPanel panel = new JPanel();
JLabel label = new JLabel("test");
panel.add(label);
panel.setPreferredSize(new Dimension(64, 64));
panel.setSize(panel.getPreferredSize());
panel.addNotify();
panel.validate();

Graphics2D g2 = renderer.createGraphics();
g2.scale(1, -1);
g2.translate(0, -128);
   
panel.print(g2);

g2.dispose();
Texture t = renderer.getTexture();
16  Java Game APIs & Engines / JOGL Development / Re: Write a JPanel to a Texture with TextureRenderer on: 2008-04-07 16:29:31
Yes seems to be more a Swing problem than TextureRenderer. I'm not a Swing expert either but I think it doesn't work because the panel is not realized.

I did the test Saxer recommended : After the creation of the JPanel and before the render of the Texture, I added the JPanel into a JFrame, pack it and make it visible. It works, the Texture shows the JPanel (in the inverse order but doesn't matter for now). So I did some tests, if I just set the JFrame visible without pack() it doesn't work. So I assumed the problem is because I try to render into a Texture a JPanel which has never been realized.
Hence I tried to validate manually my JPanel after creation, unfortunately the validate() method doesn't validate because the test isValid() is still false after it. I'm not sure of the behaviour of Swing when working on non-realized Component, I also tried doLayout() but it doesn't work...
17  Java Game APIs & Engines / JOGL Development / Write a JPanel to a Texture with TextureRenderer on: 2008-04-04 21:25:31
Hi all !
I would like to draw some JPanel in my GLJPanel. In order to draw a lot of them with correct performances I think creating texture of the panels is better than add the panels to the GLJPanel. I don't need the Swing Events so it is not a problem.

I've succeeded to draw some Java2D in texture but I can't see anything with the panels. I've tried this :
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
TextureRenderer renderer = new TextureRenderer(64,64, true);
Graphics2D g2 = renderer.createGraphics();

JPanel panel = new JPanel();
JLabel label = new JLabel("test");
panel.add(label);
panel.setPreferredSize(new Dimension(64, 64));
         
panel.paint(g2);
         
g2.dispose();
         
Texture t = renderer.getTexture();

So if I replace panel.paint(g2) by g2.fillOval(0, 0, 64, 64) it is working well I can see the shape.

And after I draw the texture on a rectangle like this :

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
texture.enable();
     
gl.glBegin(GL.GL_TRIANGLE_STRIP);
texture.bind();
gl.glTexCoord2d(1, 1);
gl.glVertex3f(w, h, 0);
gl.glTexCoord2d(0, 1);
gl.glVertex3f(-w, h,0);
gl.glTexCoord2d(1, 0);
gl.glVertex3f(w, -h, 0);
gl.glTexCoord2d(0, 0);
gl.glVertex3f(-w,-h, 0);
gl.glEnd();
       
texture.disable();


What I'm doing wrong ? Thank a lot  Wink
18  Java Game APIs & Engines / JOGL Development / Don't repaint a part of a GLJPanel on: 2007-11-07 10:33:00
Hi all ! I'm trying to make a Java2D minimap which would be shown over my GLJPanel.

I subclass a paintComponent method of a JComponent and I draw my minimap into it. This JComponent is added in the renderForeground method of my subclass of GLJPanel. The problem is that this JComponent is repainting at the same framerate as my GLJPanel, this is normal I agree. My minimap needs only few repaint (only when something appears in the world).
How could I avoid repainting my minimap and let it visible at all ?

Thanks !
19  Java Game APIs & Engines / JOGL Development / Re: Render manually instead of using Animator on: 2007-11-05 16:37:18
Hello, It is possible to replace Animator, you have to be careful with threads but the only things to do is calling display (the GLJPanel takes care of calling init method first, you don't have to call it yourself).

I use Executors, very powerful Threads manipulations which lets you create Scheduling capabilities when using ScheduledExecutorService :

1  
2  
ScheduledExecutorService autoDisplayExecutor = Executors.newSingleThreadScheduledExecutor();
autoDisplayExecutor.scheduleWithFixedDelay(displayRunnable, 0, 22, TimeUnit.MILLISECONDS);


This code will call a Runnable in a SingleThread every 22 Milliseconds (approximately 30 fps). If the treatment of displayRunnable is longer, the next call will be differed. This is exactly the same behaviour of the FPSAnimator, it tries to keep a level of FPS.

Here you have the runnable

1  
2  
3  
4  
5  
6  
7  
Runnable displayRunnable = new Runnable() 
{
   public void run()
   {
      gljpanel.display();
   }
};


If you want a normal Animator and not a FPSAnimator you could simply use an ExecutorService.

With this scheduleexecutor you can execute other Runnable in the queue like this

1  
autoDisplayExecutor.execute(reinitBufferRunnable);


The Executor will assure the thread safety, it will not execute displayRunnable until reinitBufferRunnable has done.
20  Java Game APIs & Engines / JOGL Development / Re: Scale a 2D text with TextRenderer on: 2007-11-05 11:17:52
OK Thanks !. I've tried something else, I found in sources the draw method call the draw3d method with a scaleFactor of 1. So I overloaded the TextRenderer class and the draw method with a customized scaleFactor. It works fine ! To avoid noisy pixels I set a font size of 30 and set a maximum scaleFactor of 1, so my texts could only be minimized and the visual result is quite good for now.
21  Java Game APIs & Engines / JOGL Development / Scale a 2D text with TextRenderer on: 2007-10-31 14:40:22
Hi all !

Is it possible to scale a 2d text with the TextRenderer class ? I have many texts to draw and each must have a different size. Is is possible to reduce the font size or scale the text without create a new TextRenderer instance ?

I'v tried the 3d drawing but I have some artefacts (horizontal lines across my text) when I rotate my camera and unfortunately 3d showing slows my panel.

Thanks ! bye  Wink
22  Java Game APIs & Engines / JOGL Development / Re: What cause a GLJPanel reinit ? on: 2007-10-29 17:45:40
Thanks for your answer I didn't know anything about addNotify.

I tried to subclass GLJPanel and addNotify and removeNotify methods. They are indeed called when I init for the fist time the panel or when I change perspective but unfortunately they aren't called in the situation I described first. What else could call these inits ?
23  Java Game APIs & Engines / JOGL Development / What cause a GLJPanel reinit ? on: 2007-10-24 17:49:23
Hello all !

I'm trying to display some swing panels over my GLJPanel. I call them Flying Panels and they are simply added into a null LayoutManager. Everything is ok for that I enjoy this JOGL feature.
My problem happens when I manipulate some controls into these panels, for example making a list visible with setVisible. Before setVisible has finished the GLJPanel is reinit (the init() method is called). I assume some Swing method which update the ui call this unnecessary reinit ? Could you explain me how this work ?

Thanks a lot
Pages: [1]
 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (33 views)
2014-12-15 09:26:44

Mr.CodeIt (23 views)
2014-12-14 19:50:38

BurntPizza (51 views)
2014-12-09 22:41:13

BurntPizza (84 views)
2014-12-08 04:46:31

JscottyBieshaar (45 views)
2014-12-05 12:39:02

SHC (59 views)
2014-12-03 16:27:13

CopyableCougar4 (60 views)
2014-11-29 21:32:03

toopeicgaming1999 (123 views)
2014-11-26 15:22:04

toopeicgaming1999 (114 views)
2014-11-26 15:20:36

toopeicgaming1999 (32 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org 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‑gaming.org
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!