lragnarsson / emerald-engine Goto Github PK
View Code? Open in Web Editor NEW3D graphics engine using OpenGL
License: MIT License
3D graphics engine using OpenGL
License: MIT License
Forward vs deferred vs G-buffer values
Investigate different storing options (such as UBO and SSBO) and how to sync CPU and GPU representations more efficiently.
Create a sun
Would be nice to use mouse functionality of anttweakbar instead of keyboard-commands.
Useful for camera movement paths and moving light sources around following set paths
Possibility to create splines in scene file and attach splines to models perhaps?
The grass color texture is quite noisy! Might use this as noise.
Right now this is solved by changing to the correct aspect ratio in the makefile and running make clean -> make.
Would be nice to fix though.
To make speed consistent :)
To optimize SSAO. The lighting pass in the deferred pipeline needs to be moved to view-space for this to work. We would save a matrix product per SSAO-sample, (around 16 per fragment), if this was done.
Place models in the heightmap.
Design splines for light sources.
Design camera splines through the scene.
it's sad.
And load from scene file.
Some inspiration:
http://learnopengl.com/#!Advanced-Lighting/Shadows/Shadow-Mapping
It's getting big. Perhaps break out UI stuff and post processing.
To be able to conveniently write data to file. Would be nice to introduce a #-LOG_TO_FILE to encapsulate such sections so it is completely removed from the program if not in use.
With parameter that sets the dependency between the two. Depends on #87
With dead trees (since we do not support alpha)
Rocks
Larger heightmap
Flying model casting shadow along spline
is not working well together. blitFrameBuffer is the problem.
A cube or sphere with flat color shading.
Create LODs for grass generation
Dead trees
Rocks (cuz they rock)
Other nice models
Like so:
float max_aniso = 0.f;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_aniso);
glBindTexture(...)
//...
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, an);
keep min and mag filters as is.
Terrain bounding spheres are incorrect due to how the m2w matrix for the Terrain is set.
Flipping normal vectors creates popping effects. The reason is that light sources that "hit the backside" of a grass straw contributes with 0 light right now.
This image shows the problem. The whole area inside the red circle should get bright, because thats how grass works.
These images illustrate the popping problem:
Notice how a few grass straws are almost completely dark in the first picture, while most are brightly green.
I am not sure how we should tackle this in our deferred fragment shader, since it cannot know that grass should be rendered differently from any other surface. One solution would of course be to run another fragment shader with just the grass, and keep the grass geometry in the normal pipeline for SSAO, but it would be quite performance heavy.
Use ground height for camera movement. Depends on #83
Visualize normal vectors.
Would be nice to implement this in a proper way. Would be convenient for debugging as well.
Create geometry from a heightmap, loaded before anything else.
Tweak for a specific planar scale on heightmap that looks good.
Maybe add LOD3 with even less grass.
Should increase performance.
Would be nice in the future!
A first goal could be to expose some model and light functions such as move to a scripting language.
I found an implementation of Scheme which is made for this purpose called Guile
It would be nice to have script files which can move things, trigger animations and such. Could also have functionality triggered by user input. Seems simple enough to also support a REPL for calling functions at runtime :)
... from a course project to a named project for use in this course and more!
What are your thoughts?
Name suggestions?
Combination of culling on CPU and the light volumes approach mentioned on learnopengl.com?
http://learnopengl.com/#!Advanced-Lighting/Deferred-Shading
On each model, in each render loop, we access these properties:
model->draw_me
model->mesh->diffuse_map->id
model->mesh->specular_map->id
model->mesh->normal_map->id
mesh->get_VAO()
We could probably increase our cache-hit-rate a lot by putting these properties in a struct and then the struct for each model i a vector. I'll work with this starting today - or is there anything else we should look at that's more critical?
Tweak these values for our demo
It would be nice to at least specify the name of the scene file to the executable like
./exec debug_scene.txt
Would be nice with a wind direction dictating in which direction we move in the gradient map.
Move bounding spheres and culling logic from model to mesh.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.