morganbengtsson / mos Goto Github PK
View Code? Open in Web Editor NEWLightweight game engine.
License: MIT License
Lightweight game engine.
License: MIT License
Loading of textures, meshes etc should not be done in constructors.
The blended edge of the spotlight is hard coded in the fragment shader. Export the blend parameter from Blender instead.
A constructor that takes childs for the Model class.
It might be convenient to support multi texturing for the albedo texture. Related to #31.
Might need a triangle structure in the mesh class for triangle sorting etc.
Cube map based refraction can be added. Though separate it from ordinary opacity with a new transmission parameter on the material.
The ability to have at least two texture coordinates per mesh may be convenient. Especially if multi texturing is implemented.
A new class that represent a GPU texture
Does the material need to be shared_ptr?
Emission and albedo are vec4 in the shader. Should be sufficient to have vec3.
stb is more lightweight and general, use that instead.
Only the first light is rendered in to environment lights. Make sure at least the closest one is rendererd.
Low frequency AO can be approximated by storing depth in the environment cubemap. Try it out and see what happens.
The light should only have quadratic attenuation.
Bring back the emission map to conform with the Principled shader.
GLEW is a bit old, better to use glbinding
A collection class for models, for convenience.
Not sure if the normalmaps are working
i don't know if it gonna be important or not, the current features mos have right now is already impressive, its small but the rendering is like wow, but i don't see any ambient occlusion (except ao map in the material slot) i know using baked ao is a good idea but i think its gonna be time consuming to bake them one by one. so how about add the real-time one?
i will just leave something here whos know you will be interested
Use this instead of pure strings.
The emission map is not very usable, remove it.
Implement variance shadow maps. Also multi sample them and maybe blur them. More info here:
http://codeflow.org/entries/2013/feb/15/soft-shadow-mapping/
Scene is a more common and understandable name.
Emission is sufficient to have as a float value based on the base color. Not a whole vec3.
Particle cloud should have an own transform/position.
Emission should be vec3 color to conform with principled shader.
Rendering with opaque materials is quite sketchy at the moment. Foliage materials should either discard transparent pixels or use GL_SAMPLE_ALPHA_TO_COVERAGE. Other transparent materials should not.
Filesystem should be supported by all recent compilers, including Visual studio 2017. Remove the dependency en check so it compiles.
Implement depth of field on per camera basis.
Sound instead of speaker for all data regarding that, mainly the json entity format.
Opacity on the material is reduntant. Only use IOR and transmission.
Standard MSAA is a bit slow, try temporal AA and see if it improves things.
For reference:
Blender implementation
There is no need for obj file support. use the own mesh format together with exporters instead.
The particle rendering does not respond well to the DOF effect. A solution would be to blit the depth buffer to a separate texture before rendering the particles. This depth texture is later used for DOF lookup.
Just from your Readme:
target_link_libraries(${PROJECT_NAME} mos)
target_include_directories(${PROJECT_NAME} PUBLIC externals/mos/include)
The 2nd line should not be required if mos
had setup its include dirs. Use target_include_directories
and PUBLIC/PRIVATE/INTERFACE
for all target_*
functions. See "Effective CMake" by Daniel Pfeiffer,
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.