JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer Class Reference
Inheritance diagram for com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer:
Collaboration diagram for com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer:

Classes

class  TimeShiftKeys
 

Public Member Functions

String getBaseRoutineClassName ()
 
boolean preferMultiSampling ()
 
int getNumberOfSamplingBuffers ()
 
boolean preferAnisotropicFiltering ()
 
float getAnisotropyLevel ()
 
boolean wantsFrameCapture ()
 
int getDesiredFramerate ()
 
boolean wantsFrameSkip ()
 
boolean usesFullScreenMode ()
 
 ElektronenMultiplizierer (final String inBaseRoutineClassName, final boolean inMultiSampling, final int inNumberOfSampleBuffers, final boolean inAnisotropicFiltering, final float inAnisotropyLevel, final boolean inFrameCapture, final boolean inFrameSkip, final int desiredFrameRate, final int startFrame)
 
 ElektronenMultiplizierer ()
 
void skipFrames (final int frames)
 skip frames by turning back start time More...
 
GLCapabilitiesImmutable getGLCapabilities ()
 
void init (final GLAutoDrawable drawable)
 Called by the drawable immediately after the OpenGL context is initialized. More...
 
void display (final GLAutoDrawable drawable)
 Called by the drawable to initiate OpenGL rendering by the client. More...
 
void reshape (final GLAutoDrawable drawable, final int x, final int y, final int width, final int height)
 Called by the drawable during the first repaint after the component has been resized. More...
 
void dispose (final GLAutoDrawable drawable)
 Notifies the listener to perform the release of all OpenGL resources per GLContext, such as memory buffers and GLSL programs. More...
 
void resetFrameCounter ()
 
void handleSyncEvent (final int inMMTime_u_ms)
 
void init (GLAutoDrawable drawable)
 Called by the drawable immediately after the OpenGL context is initialized. More...
 
void dispose (GLAutoDrawable drawable)
 Notifies the listener to perform the release of all OpenGL resources per GLContext, such as memory buffers and GLSL programs. More...
 
void display (GLAutoDrawable drawable)
 Called by the drawable to initiate OpenGL rendering by the client. More...
 
void reshape (GLAutoDrawable drawable, int x, int y, int width, int height)
 Called by the drawable during the first repaint after the component has been resized. More...
 

Protected Attributes

int mFrameBufferTextureID
 
int mFrameBufferObjectID
 
int mSyncTime
 
int mSyncEventNumber
 
float mEffectTime
 
int mEffectNumber
 
int mEffectSyncTime
 
boolean mSyncEvent_01
 
boolean mSyncEvent_02
 
boolean mSyncEvent_03
 
boolean mSyncEvent_04
 
boolean mSyncEvent_05
 
boolean mSyncEvent_06
 
boolean mSyncEvent_07
 
boolean mSyncEvent_08
 

Detailed Description

  __ __|_  ___________________________________________________________________________  ___|__ __
 //    /\                                           _                                  /\    \
//____/  __     __ _____ _____ _____ _____ _____  | |     __ _____ _____ __        __/  ____\
 \    \  / /  __|  |     |   __|  _  |     |  _  | | |  __|  |     |   __|  |      /\ \  /    /
  ____\/_/  |  |  |  |  |  |  |     | | | |   __| | | |  |  |  |  |  |  |  |__   "  _\/____/
 /\    \     |_____|_____|_____|__|__|_|_|_|__|    | | |_____|_____|_____|_____|  _  /    /\
/  ____\                       http://jogamp.org  |_|                              /____/  \
\  /   "' _________________________________________________________________________ `"   \  /
 \/____.                                                                             .____\/

JOGL2 port of my PC 4k intro competition entry for Revision 2011. Sure it got a little bigger while porting but the shader and control code remained more or less untouched. The intro renders a fullscreen billboard using a single fragment shader. The shader encapsulates basically two different routines: A sphere-tracing based raymarcher for a single fractal formula and a bitmap orbit trap julia+mandelbrot fractal renderer. Additionally an inline-processing analog-distortion filter is applied to all rendered fragments to make the overall look more interesting.

The different intro parts are all parameter variations of the two routines in the fragment shader synched to the music: Parts 3+5 are obviously the mandelbrot and julia bitmap orbit traps, and parts 1,2,4 and 6 are pure fractal sphere tracing.

During the development of the intro it turned out that perfectly raymarching every pixel of the orbit trapped julia+mandelbrot fractal was way to slow even on highend hardware. So I inserted a lowres intermediate FBO to be used by the bitmap based orbit trap routine wich was ofcourse way faster, but had the obvious upscaling artefacts. Maybe I'll produce a perfect quality version for very patient people with insane hardware :)

Papers and articles you should be familiar with before trying to understand the code:

http://www.youtube.com/user/DemoscenePassivist

Author
Dominik Ströhlein (DemoscenePassivist)

Definition at line 120 of file ElektronenMultiplizierer.java.

Constructor & Destructor Documentation

◆ ElektronenMultiplizierer() [1/2]

com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.ElektronenMultiplizierer ( final String  inBaseRoutineClassName,
final boolean  inMultiSampling,
final int  inNumberOfSampleBuffers,
final boolean  inAnisotropicFiltering,
final float  inAnisotropyLevel,
final boolean  inFrameCapture,
final boolean  inFrameSkip,
final int  desiredFrameRate,
final int  startFrame 
)

Definition at line 173 of file ElektronenMultiplizierer.java.

Here is the call graph for this function:

◆ ElektronenMultiplizierer() [2/2]

com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.ElektronenMultiplizierer ( )

Definition at line 210 of file ElektronenMultiplizierer.java.

Member Function Documentation

◆ display()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.display ( final GLAutoDrawable  drawable)

Called by the drawable to initiate OpenGL rendering by the client.

After all GLEventListeners have been notified of a display event, the drawable will swap its buffers if setAutoSwapBufferMode is enabled.

Implements com.jogamp.opengl.GLEventListener.

Definition at line 322 of file ElektronenMultiplizierer.java.

Here is the call graph for this function:

◆ dispose()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.dispose ( final GLAutoDrawable  drawable)

Notifies the listener to perform the release of all OpenGL resources per GLContext, such as memory buffers and GLSL programs.

Called by the drawable before the OpenGL context is destroyed by an external event, like a reconfiguration of the GLAutoDrawable closing an attached window, but also manually by calling destroy.

Note that this event does not imply the end of life of the application. It could be produced with a followup call to init(GLAutoDrawable) in case the GLContext has been recreated, e.g. due to a pixel configuration change in a multihead environment.

Implements com.jogamp.opengl.GLEventListener.

Definition at line 502 of file ElektronenMultiplizierer.java.

Here is the call graph for this function:

◆ getAnisotropyLevel()

float com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.getAnisotropyLevel ( )

Definition at line 155 of file ElektronenMultiplizierer.java.

◆ getBaseRoutineClassName()

String com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.getBaseRoutineClassName ( )

Definition at line 151 of file ElektronenMultiplizierer.java.

◆ getDesiredFramerate()

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.getDesiredFramerate ( )

Definition at line 157 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ getGLCapabilities()

GLCapabilitiesImmutable com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.getGLCapabilities ( )

Definition at line 224 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ getNumberOfSamplingBuffers()

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.getNumberOfSamplingBuffers ( )

Definition at line 153 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ handleSyncEvent()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.handleSyncEvent ( final int  inMMTime_u_ms)

Definition at line 540 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ init()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.init ( final GLAutoDrawable  drawable)

Called by the drawable immediately after the OpenGL context is initialized.

Can be used to perform one-time OpenGL initialization per GLContext, such as setup of lights and display lists.

Note that this method may be called more than once if the underlying OpenGL context for the GLAutoDrawable is destroyed and recreated, for example if a GLCanvas is removed from the widget hierarchy and later added again.

Implements com.jogamp.opengl.GLEventListener.

Definition at line 229 of file ElektronenMultiplizierer.java.

Here is the call graph for this function:

◆ preferAnisotropicFiltering()

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.preferAnisotropicFiltering ( )

Definition at line 154 of file ElektronenMultiplizierer.java.

◆ preferMultiSampling()

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.preferMultiSampling ( )

Definition at line 152 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ resetFrameCounter()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.resetFrameCounter ( )

Definition at line 517 of file ElektronenMultiplizierer.java.

◆ reshape()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.reshape ( final GLAutoDrawable  drawable,
final int  x,
final int  y,
final int  width,
final int  height 
)

Called by the drawable during the first repaint after the component has been resized.

The client can update it's viewport associated data and view volume of the window appropriately.

For efficiency the GL viewport has already been updated via glViewport(x, y, width, height) when this method is called.

Parameters
drawablethe triggering GLAutoDrawable
xlower left corner of the viewport rectangle in pixel units
ylower left corner of the viewport rectangle in pixel units
widthwidth of the viewport rectangle in pixel units
heightheight of the viewport rectangle in pixel units

Implements com.jogamp.opengl.GLEventListener.

Definition at line 478 of file ElektronenMultiplizierer.java.

Here is the call graph for this function:

◆ skipFrames()

void com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.skipFrames ( final int  frames)

skip frames by turning back start time

Parameters
framespositive or negative values

Definition at line 218 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

◆ usesFullScreenMode()

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.usesFullScreenMode ( )

Definition at line 159 of file ElektronenMultiplizierer.java.

◆ wantsFrameCapture()

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.wantsFrameCapture ( )

Definition at line 156 of file ElektronenMultiplizierer.java.

◆ wantsFrameSkip()

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.wantsFrameSkip ( )

Definition at line 158 of file ElektronenMultiplizierer.java.

Here is the caller graph for this function:

Member Data Documentation

◆ mEffectNumber

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mEffectNumber
protected

Definition at line 528 of file ElektronenMultiplizierer.java.

◆ mEffectSyncTime

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mEffectSyncTime
protected

Definition at line 529 of file ElektronenMultiplizierer.java.

◆ mEffectTime

float com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mEffectTime
protected

Definition at line 527 of file ElektronenMultiplizierer.java.

◆ mFrameBufferObjectID

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mFrameBufferObjectID
protected

Definition at line 524 of file ElektronenMultiplizierer.java.

◆ mFrameBufferTextureID

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mFrameBufferTextureID
protected

Definition at line 523 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_01

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_01
protected

Definition at line 531 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_02

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_02
protected

Definition at line 532 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_03

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_03
protected

Definition at line 533 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_04

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_04
protected

Definition at line 534 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_05

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_05
protected

Definition at line 535 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_06

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_06
protected

Definition at line 536 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_07

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_07
protected

Definition at line 537 of file ElektronenMultiplizierer.java.

◆ mSyncEvent_08

boolean com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEvent_08
protected

Definition at line 538 of file ElektronenMultiplizierer.java.

◆ mSyncEventNumber

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncEventNumber
protected

Definition at line 526 of file ElektronenMultiplizierer.java.

◆ mSyncTime

int com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer.mSyncTime
protected

Definition at line 525 of file ElektronenMultiplizierer.java.


The documentation for this class was generated from the following file: