Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (715)
Games in Android Showcase (214)
games submitted by our members
Games in WIP (788)
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
  ignore  |  Print  
  FFP Software Rendered Graphics Engine  (Read 9677 times)
0 Members and 1 Guest are viewing this topic.
Offline Archive
« Posted 2016-09-11 23:05:25 »

 Like the previous Envel engines, this is pure java with no libraries other than the JRE.

Current Build: 1.0.0

I named this engine FFP (Fixed-Function Pipeline) and it functions very similarly to legacy fixed function openGL.

Here is release build 1.0.0 of the FFP engine!

http://www.mediafire.com/file/il2jbkm3hg9sl1u/ffp_1_0_0.zip

This ZIP archive should contain three folders and a jar file.
The three folders are: doc, eutLE, and ffp_examples
The jar file is ffp_1_0_0.jar

doc - the javadocs for the engine (this is also packed in the jar file for convenience)
eutLE - the source code of the light version of my windowing and input library.
ffp_examples - all the examples you see in the images in the main post and some extra ones Smiley
ffp_1_0_0.jar - the jar file that contains the 3D engine. Link this to a project to be able to use it.

If you have any questions, concerns, or bugs to report, please either post them on this thread or private message me!
Supported:

    -supports most of the features in OpenGL 1.1 but implemented in software
    -very fast and optimized quite well, and visual quality was still relatively maintained
    -some features were added in extra. Like mixed texEnv, dithered filtering, and block filtering
    -includes FFPAUX which is the equivalent to GLAUX and GLU combined
    -FFPAUX has the equivalents to the GLU quadric functions, matrix functions, etc
    -Multithreaded or single threaded rendering
    --- Engine specs/limits
    ----- Maximum textures - 32768
    ----- Maximum texture dimension - 1024
    ----- True color texturing unless using bilinear filtering, which only allows 256 colors (the engine quantizes the textures for you)
    ----- depth buffer that's accurate up to 52 bits
    ----- Max number of lights - 128

Renderer:

Points
Lines
Line strips
Line loops
Triangles
Triangle strips
Triangle fans
Quads
Quad strips
Perspective correct texture mapping
Double textures (multitexturing but only up to two textures)
face culling
depth only output
depth buffering
modelview, projection, texture, and double map texture matrix
line/polygon stippling with optional blending of stippled regions
Sphere env mapping
Texture env modes: Decal, Add, Modulate, Mix
full 6 plane frustum culling and clipping
bilinear, nearest index, or dithered texture filtering
Fog
block filtering
Quadrics with point,fill,silhouette,line,outside,inside,smooth,flat,none.
Multithreaded rendering (this is an option)
Deferred rendering for speed
State storing and restoring
Gamma correction with 48 bit colors

Video:
-video antialiasing
-video filtering (box filters)
- dithering to palette


Lighting:

Gouraud vertex shading
Phong per pixel shading
Flat shading
ambient, diffuse, specular, emissive light
128 light sources
constant, linear, quadratic attenuation
two sided lighting (but only 1 sided materials for simplicity [if need arises, adding two sided materials wouldn't be hard])
spotlights!


I'll be updating this thread periodically when something cool has been accomplished (instead of posting on the What I Did Today thread)

Here are screenshots of all the demos I've put together, most of these are from the opengl redbook converted to work with my engine. Some I've created on my own, and others I've found on the internet.

All of the following images have been rendered in real time in FFP Smiley

basic2d.java (basic 2d graphics in the engine)

blockfilter.java (block filtering on the bottom plane, or single level mipmapping @theagentd)

chaos.java (chaos using the growth formula x_(n+1) = L * x_n * (1-x_n))

checker.java (showing off the texture filtering, from left to right: nearest, dithered, bilinear)

colorcube.java (each vertex is a different color)

colormat.java (color material)

cube.java (really basic 3D)

dither.java (showing off the dithered-paletted graphics mode)

dmtex.java (multitexturing)

fog.java (exponential fog)

gamma.java (test your monitor's gamma)

gears.java (ahh the gears program...)

lines.java (line stippling and line width)

mandelbrot.java (this one isn't rendered in real time, it takes around 5 seconds to generate the image)

material.java (redbook 101)

model.java (redbook, showing modeling transformations)

mosaic.java (found on internet)

movelight.java (redbook 101 as well)

movelights.java (advanced version of movelight.java with 3 lights, colors, and phong shading)

polyhedra.java (a program that shows the built in tetrahedron, icosahedron, octahedron, and dodecahedron functions)

polyoff.java (showing polygon offset)

polys.java (showing polygon stippling)

prim.java (all the primitives with colors)

quad.java (a super detailed and interactive demo of quadrics)

quadric.java (redbook quadrics)

robot.java (redbook... showing model matrix capabilities)

rotate.java (image rotation)

scene.java (vanilla redbook)

screendoor.java (very cool and useful application showing stippled transparency!)

scube.java (cool cube shadow using a shadow matrix, [shadow is dithered but blended post-render])

shadowmap.java (showing excruciatingly slow brute force shadow mapping)

smooth.java (vertex interpolation)

spheremap.java (sphere mapping and multitexturing [checkerboard and rainbow gradient textures])

spheres.java (material grid)

spot.java (showing off spotlights with phong shading)

star.java (3d starfield!)

vidfilter.java (post-render video filtering)

vrd.java (simple program to show you how to return depth information to the screen)

watersurf.java (another one I found online but heavily modified. Surface is sphere mapped and perlin noise is used)

wave.java (also found this online, this wave is animated and stored in a sequence unlike the previous one)

Offline orange451

JGO Kernel


Medals: 271
Projects: 5
Exp: 6 years


Your face. Your ass. What's the difference?


« Reply #1 - Posted 2016-09-12 03:29:04 »

Looks really good! Smiley
Just gotta get some of that lighting stuff pre-generated!

First Recon. A java made online first person shooter!
Offline EgonOlsen
« Reply #2 - Posted 2016-09-12 06:55:32 »

Looks nice, good work. But the anti-aliasing actually looks more like a simple blur filter to me... Huh

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Archive
« Reply #3 - Posted 2016-09-12 14:26:53 »

Looks nice, good work. But the anti-aliasing actually looks more like a simple blur filter to me... Huh
(just between us, it is, I'll implement something better soon Wink )

Offline J0
« Reply #4 - Posted 2016-09-12 14:47:43 »

Careful, mouse look keeps mouse at the middle of the screen instead of the middle of the frame :p
Also, I love this renderer! (to be honest I'm mostly commenting here to keep updated on the thread Roll Eyes )
Offline Archive
« Reply #5 - Posted 2016-09-12 15:55:48 »

Careful, mouse look keeps mouse at the middle of the screen instead of the middle of the frame :p
Also, I love this renderer! (to be honest I'm mostly commenting here to keep updated on the thread Roll Eyes )
Oh shoot yeah I forgot to fix that. I'll fix it and upload another version within a few hours

Offline Archive
« Reply #6 - Posted 2016-09-20 05:44:07 »



... removed on Feb 21, 2017 ... because it represented outdated content.

Offline orange451

JGO Kernel


Medals: 271
Projects: 5
Exp: 6 years


Your face. Your ass. What's the difference?


« Reply #7 - Posted 2016-09-21 01:58:31 »

The phong looks really nice! Smiley

First Recon. A java made online first person shooter!
Offline Archive
« Reply #8 - Posted 2016-09-21 04:45:18 »

Thanks orange!

Small update: due to a fan's request I have made it so that the game can be scaled up/down without changing the game's resolution! So you can enjoy the speed of 640x480 at 2560x1440!

Download link:
http://www.mediafire.com/download/numbf8573d27cyy/jffp_0_4_5.jar

Offline Archive
« Reply #9 - Posted 2016-12-15 05:34:48 »



Gun model thanks to orange451

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Archive
« Reply #10 - Posted 2017-01-18 20:40:44 »

I've added screenshots of all the demos to the main post

Offline DarkCart

JGO Kernel


Medals: 121
Projects: 9
Exp: 50 years


It's all in the mind, y'know.


« Reply #11 - Posted 2017-01-20 20:03:54 »

good god

EDIT: this turned out to be my 500th post.

The darkest of carts.
Offline basil_

« JGO Bitwise Duke »


Medals: 413
Exp: 13 years



« Reply #12 - Posted 2017-01-20 20:39:10 »

good stuff
Offline Archive
« Reply #13 - Posted 2017-02-14 20:54:55 »

UPDATE!

Added pictures to the main post to reflect current state of the engine

I added gamma correction and b├ęzier evaluators and there are now more demos to reflect the new content.

Replaced all images to show the gamma corrected render

Offline Longor1996
« Reply #14 - Posted 2017-02-15 16:38:59 »

Awesome! With the amount of pictures in the OP, I am starting to think JGO needs something like a image gallery feature. Cheesy

Offline TGStudiosDE

JGO Coder


Medals: 14
Projects: 3
Exp: 3 years


17 Years Old Developer from Germany :)


« Reply #15 - Posted 2017-02-15 18:18:42 »

It looks very nice Smiley But can we use this Engine and create Test Programs with it or how we can we use it ? Cheesy

Contact me about Bugs: TGStudiosDE@gmail.com
Offline Archive
« Reply #16 - Posted 2017-02-16 01:33:40 »

It looks very nice Smiley But can we use this Engine and create Test Programs with it or how we can we use it ? Cheesy

I'm working on an interface between the engine and the user, because I prefer to keep the engine obfuscated

Offline J0
« Reply #17 - Posted 2017-02-16 08:13:18 »

Please be careful about which functionalities the users have access to; we all hate an engine wrapper that is super powerful and all but has that one thing we can't do (I'm looking at you, LWJGL Pointing)
Offline Archive
« Reply #18 - Posted 2017-02-16 16:05:17 »

Please be careful about which functionalities the users have access to; we all hate an engine wrapper that is super powerful and all but has that one thing we can't do (I'm looking at you, LWJGL Pointing)
What functionalities are you referring to? I'll make sure to add them if possible

Offline J0
« Reply #19 - Posted 2017-02-20 10:17:38 »

Can't think of any particular example, but I'd say the user should be able to access all functionalities of the engine, and to access them without having to go through a long process of invoking ten methods and using objects with confusing names just for one purpose... Do I even make sense at all?
Offline theagentd

« JGO Bitwise Duke »


Medals: 951
Projects: 4
Exp: 8 years



« Reply #20 - Posted 2017-02-20 11:51:24 »

Can't think of any particular example, but I'd say the user should be able to access all functionalities of the engine, and to access them without having to go through a long process of invoking ten methods and using objects with confusing names just for one purpose... Do I even make sense at all?
No. Wink Are you referring to LWJGL specifically or just OpenGL?

Myomyomyo.
Offline J0
« Reply #21 - Posted 2017-02-20 13:12:31 »

I'm referring to basically any framework built around an engine. Let me get some examples!
Right now, I can't really think of any example involving LWJGL, except maybe for some rather frustrating problems caused by the fact it was built to work with buffers instead of arrays.
However, I have been working recently with the C++ library SFML (which is also built on top of OpenGL); in SFML, you cannot really just create a texture and render it multiple times in different locations; to do that, you have to create one rectangle object, pass it a size, a location and a texture, then draw it once, change its location, draw it once more, change its location, etc. Or you can create a bunch of rectangles, pass each of them a different location and the same size & texture, and draw them all. And it's the same if you just want to quickly render a texture that just exists for one frame: you have to create a new rectangle object each time. Fortunately SFML allows direct OpenGL calls to be made Smiley But if you really hide the engine completely behind a framework you want to give access to every single feature via the framework, I'd say.
Offline Archive
« Reply #22 - Posted 2017-02-20 17:38:28 »

@J0 Don't worry about this. All the methods are static and there are NO java objects available to the user because they aren't needed. All methods have parameters of ints, floats, and int arrays or float arrays. All the 'wrapping' is up to you because I like to keep the layer between the engine and the user as thin as possible.

Offline TGStudiosDE

JGO Coder


Medals: 14
Projects: 3
Exp: 3 years


17 Years Old Developer from Germany :)


« Reply #23 - Posted 2017-02-21 22:29:00 »

Sounds interesting and I'm excited to build some 3D examples with the FFP Engine! Smiley

Contact me about Bugs: TGStudiosDE@gmail.com
Offline Archive
« Reply #24 - Posted 2017-02-26 19:13:57 »

The day is finally here!

Here is release build 1.0.0 of the FFP engine!

Link in main post

This ZIP archive should contain three folders and a jar file.
The three folders are: doc, eutLE, and ffp_examples
The jar file is ffp_1_0_0.jar

doc - the javadocs for the engine (this is also packed in the jar file for convenience)
eutLE - the source code of the light version of my windowing and input library.
ffp_examples - all the examples you see in the images in the main post and some extra ones Smiley
ffp_1_0_0.jar - the jar file that contains the 3D engine. Link this to a project to be able to use it.

If you have any questions, concerns, or bugs to report, please either post them on this thread or private message me!

Offline TGStudiosDE

JGO Coder


Medals: 14
Projects: 3
Exp: 3 years


17 Years Old Developer from Germany :)


« Reply #25 - Posted 2017-02-27 08:46:35 »

I will try to build some examples later with the Engine and try to unterstand how it Works Smiley

Contact me about Bugs: TGStudiosDE@gmail.com
Offline TGStudiosDE

JGO Coder


Medals: 14
Projects: 3
Exp: 3 years


17 Years Old Developer from Germany :)


« Reply #26 - Posted 2017-03-09 18:12:26 »

Could you reupload the Engine again ? Smiley

Contact me about Bugs: TGStudiosDE@gmail.com
Offline Archive
« Reply #27 - Posted 2017-03-09 21:44:09 »

Could you reupload the Engine again ? Smiley
Yeah of course give me a little bit, I was fixing some bugs and I removed some redundant content. I also added spotlights and phong shading!

Offline TGStudiosDE

JGO Coder


Medals: 14
Projects: 3
Exp: 3 years


17 Years Old Developer from Germany :)


« Reply #28 - Posted 2017-03-09 21:48:27 »

Oh Okay because I want to start coding with the Engine again today and I was confused why it was down and I delete the old Engine accidentally Smiley

EDIT: I want to code a simple FPS Level with this Engine could you help me with the Level Loading because you have already a working example Smiley

Contact me about Bugs: TGStudiosDE@gmail.com
Offline Archive
« Reply #29 - Posted 2017-03-10 00:02:22 »

Oh Okay because I want to start coding with the Engine again today and I was confused why it was down and I delete the old Engine accidentally Smiley

EDIT: I want to code a simple FPS Level with this Engine could you help me with the Level Loading because you have already a working example Smiley
Ehhh.... That's a lot of work. I use BSP trees for the levels and there's way too much code and understanding behind it to just throw at you. Try doing text file loading where the map is 2D and you use ascii characters to make a map.

EDIT:
I've put the link back up and i've added more pictures to better reflect the current state of the engine!

Pages: [1] 2
  ignore  |  Print  
 
 

 
CopyableCougar4 (214 views)
2017-03-24 15:39:42

theagentd (196 views)
2017-03-24 15:32:08

Rule (255 views)
2017-03-19 12:43:22

Rule (237 views)
2017-03-19 12:42:17

Rule (242 views)
2017-03-19 12:36:21

theagentd (261 views)
2017-03-16 05:07:07

theagentd (257 views)
2017-03-15 22:37:06

theagentd (186 views)
2017-03-15 22:32:18

theagentd (180 views)
2017-03-15 22:31:11

ral0r2 (166 views)
2017-03-03 11:52:41
List of Learning Resources
by elect
2017-03-13 14:05:44

List of Learning Resources
by elect
2017-03-13 14:04:45

SF/X Libraries
by philfrei
2017-03-02 08:45:19

SF/X Libraries
by philfrei
2017-03-02 08:44:05

SF/X Libraries
by SkyAphid
2017-03-02 06:38:56

SF/X Libraries
by SkyAphid
2017-03-02 06:38:32

SF/X Libraries
by SkyAphid
2017-03-02 06:38:05

SF/X Libraries
by SkyAphid
2017-03-02 06:37:51
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!