LibEcu

I’ve been working on this project for a while, and I haven’t gotten around to positing it on the forum.

LibEcu is a Graphics/Game utility for Logging, Profiling, Asset Management, and Graphics Batching. I made this mainly as a library for myself. But ever since I started I grew more and more into making it for the general public. It’s licensed with http://unlicense.org/ and I intend to keep it that way ;).

Here’s some example code for what the engine can do. (Sorry for the huge images…)

Profiling
https://github.com/ecumene-software/LibEcu/wiki/Using-Profilers

Model Batching
https://github.com/ecumene-software/LibEcu/wiki/Using-&-Drawing-Models

And the git repo:
https://github.com/ecumene-software/LibEcu

Currently, the engine doesn’t have a version… It has a field for it somewhere, but I haven’t changed it per-commit because the library is still very young, and I’m making really big changes to it.

I also made a mascot way back,

Screen shots:

2D lighting using forward-rendering.
https://github.com/ecumene-software/LibEcu/tree/master/source/examples/ecumene/tests/lighting

Can’t really see it, but there’s secularity there. :slight_smile:
https://github.com/ecumene-software/LibEcu/tree/master/source/examples/ecumene/tests/perspective

Two textures are mixed onto one shader
https://github.com/ecumene-software/LibEcu/tree/master/source/examples/ecumene/tests/multitex

This is actually a demo of batching, not really that pretty.
https://github.com/ecumene-software/LibEcu/tree/master/source/examples/ecumene/tests/shapes

Nice work; especially on the lighting.

On the git wiki, Java syntax highlighting is done like so:

```java
obj.doOopThings();

Thanks allot :)! Still learning mark-down as I go, I also updated the wiki.

I’ve worked on the geometry buffer object again, and it now calculates normals and tangents for vertices that don’t have them. And they support tangents now too… :wink:

(Vector3f) GeomBuffer.getNormal(Vector3f v0, Vector3f v1, Vector3f v2)

(Vector3f) GeomBuffer.getTangent(Vector3f v0, Vector3f v1, Vector3f v2,
				                     Vector2f st0, Vector2f st1, Vector2f st2)

I also updated the perspective demo to support tangent-space normal mapping.

https://github.com/ecumene-software/LibEcu/tree/master/source/examples/assets/perspective

return vec4(vec3(Iambi * (Idiff + Ispec)).xyz, 1);

Did you mean to multiply diffuse and specular by… ambient?

Ambient being the texel, I think so?

That’s not really what ambient lighting is.

Ambient lighting is just a fixed base colour (ie: Not affected by different lighting angles)

Should be something like:

return vec4(vec3(texel * (Iambi + Idiff + Ispec)).xyz, 1);

I’ve worked on my heightmap implementation. I’m using dependency injection & factory to decide how the height map is generated, I’m working on a ‘heightmap mesh’ so you can send them straight into a model. I have yet to test for if the vertex normals are calculated correctly, but that is done in the model class, so it should be done seamlessly regardless the geometry type.

Here’s a new demo:

I don’t have access to github at school, but the demo is in the regular ‘examples’ directory.

I also made a basic scenegraph API, which I’ll be implementing into ecugame, LibEcu’s game engine, which is going to be released separately.