Giter VIP home page Giter VIP logo

xsngine's People

Contributors

dionrhys avatar razish avatar stra1 avatar xycaleth avatar zturtleman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xsngine's Issues

Add: generic resource manager

e.g. registering shaders, textures, meshes, materials.

Templated, inherited or handle-based?
std::shared_ptr to indicate ownership? manual ref-count? resources will be shared

need to discern between networked resources and local resource handles, i.e. server may indicate a material is being used on an entity, which correlates to multiple resources on the client?

Key event chain

Input event -> keystate management -> console catcher -> game catcher -> key binds

Add: cache font data

Should cache them.
Store generated texture atlas and glyph data on disk for each requested size.

Add: deferred renderer

Depends on #30 and #28

Probably not worth keeping current branch.
Use it for reference, and research Forward+ with alpha/translucency support.

Add: Fog

Add fog, research different techniques and expose multiple options. Work out where to apply the fog to WRT code.

Refactor: share FBOs between views

Depends on #30

Views should not own FBOs as they're a limited resource.
When an FBO is required, the view should request a valid FBO (creating one if necessary) and lock it when it's in use/should not be modified.

Refactor: View / scene management

so View::renderObjects and View::pointLights, does it make sense to have them as queues?
actually, yeah. so it looks like the View represents the scene as well as stores the render commands
i think having a separate class (a Scene class?) should represent the scene, and that way you're able to have multiple views (think cameras) into the same scene
e.g. for in-game camera/portal, multiplayer split screen, etc etc
so you would have a retained renderer rather than immediate. and this would be reflected in your client game module as well
having a scene class also makes sense for rendering shadows. you may want to render from a specific view, but this doesn't include all of the entities you would need to render correct shadows (off-screen entities may contribute to shadows seen on-screen)

I guess so =]

Filesystem layer

Abstract the OS path from the game path to clean up file I/O

Could simply use <com_path>/ for now.

TODO: Enforce no read/write outside of game directory, including directory traversal
TODO: Enforce lower-case paths?
TODO: Enforce '/' as only path separator - convert '' to '/'
TODO: Touch( 'file' );

"Module" base class

virtual functions for Init/Bind/Register, Restart, Shutdown
Modular in libraries? i.e. video, client, etc.

Not really necessary to enforce. Probably best to just follow suit.

Add: SSE detection

thought about passing it via scons based on if 'NO_SSE' in os.environ, but we must also detect if SSE is even supported on this architecture (which won't be the case for ARM, for example)

Add: command buffer

Append text to command buffer at various points in code, execute buffer at key points (init, before client/server frames, etc)

Queue multiple commands? delay/wait controls?
Commands are sequential apart from delay/wait controls (will be maintained in separate buffers)

Cvars shall be accessed via set key value i.e. via a command, not implicitly

stdin, console input, and keybinds (i.e. triggered by code) can append text to the buffer.

Investigate/Add: 2D/3D content formats

2D - use stb_image?

  • PNG using libpng
  • JPEG using libjpeg(-turbo?)
  • WebP
  • TGA
  • BMP
  • DDS

3D

  • XMF - have to write python import/export tools for Blender.
    xsngine-tools contains obj2xmf and scale_xmf scripts but do not yet compute normals or read out UVs correctly due to format inconsistencies.
    Must drastically improve format (needs separate issue)
  • FBX? or keep to tools?

Investigate: material description file

Depends on #37

specify:

  • Sampler binding info containing texture path and uniform name.
  • Shader programs to use (e.g. vertexShader blah)
  • Material flags like wireframe

Need to research shader design, e.g. generic shaders like light_all.glsl and how the switch to deferred rendering will affect this

Screenshots

Preferrably PNG, maybe JPEG.
Depends what image formats we're going to support in general.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.