Giter Club home page Giter Club logo

inanity's People

Contributors

quyse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

inanity's Issues

Add capability flags to graphics systems, lower OpenGL requirements

Graphics system should be able to say what capabilities is supported. Graphics system have to initialize the best supported version of graphics device, and fallback gracefully.
As concrete example, GL subsystem should not require OpenGL 4. It should work even on Open GL ES 2.0.

Abstract window mouse capture and native mouse pointers

Windows should support two modes: mouse capture mode and free mouse mode. Mouse capture mode could be used while main gameplay is in progress. Free mouse mode could be used in pause menu, to allow moving mouse out of the window (both in fullscreen and windowed modes). Modes should be switched programmatically by game logic.

As a linked issue, windows should allow to use native mouse pointers (instead of graphics-rendered ones). Native mouse pointers are always more responsible to user input, uses the same mouse ballistics as the main system, and, despite of limitations of native windowing systems, leads to more seamless integration with operating system.

Move OS filesystem classes into platform subsystem

FolderFileSystem and accompaniyng classes should be moved into Inanity::Platform namespace (and possibly renamed). inanity-base library should be more cross-platform.
Also it's good to split FolderFileSystem into two classes - Win32FileSystem and PosixFileSystem.

Multiple exposes of object to script with different types

For now objects are exposed to script with their declared "return type", and corresponding script object is cached while script is holding a reference to it. But if an object would exposed to script second time with another return type (subtype or supertype), it gonna be exposed as old cached script object with wrong method table and stuff.

To fix that we have to cache script objects taking into account the exposed type, and make several script objects - one for each exposed type of object. Note that reclaiming object should clear all types of object at once.

Refactor ComPointer

For now, when ComPointer created from raw pointer, it thinks that it owns that pointer, and one reference already here, so it doesn't add reference.
Proposed to change this in favor of ptr's way, and refactor all places where such assignment is done. It allows to freely exchange ComPointers and raw pointers without errors, just like ptrs.
Also, it would be cool to overload address-of operator of ComPointer, to enable easy receiving objects via pointer-to-pointers, like they are usually received. The same is done in Microsoft's CComPtr.

Replace GLEW with self-made importing mechanics

Using GLEW has several disadvantages, such as hackish OpenGL initialization and a use of global variables. The engine uses not so many OpenGL functions, so importing OpenGL functions manually isn't hard, and, after all, it tends to better understanding.

Separate uniform buffer content from UniformGroup

UniformGroup should not have a buffer's data. Proposed to make a separate UniformData class which would store data, and be sent to Context. It will make easier of tracking dirty state of uniform buffer data in contexts.

Default sampler states for textures

Add possibility of setting default sampler state to texture. This feature could be easy emulated on DX11, and is natively supported on OpenGL. Moreover, this allows to set correct sampling for textures even when OpenGL doesn't have ARB_sampler_objects extension (< 3.3), for example, in WebGL.

Reference graphics system

Proposed to make reference graphics system, software rasterization and LLVM-based shaders. Such system would allow for easier debugging and headless rendering on servers plus maybe tests functionality. Of course, it should be fully abstracted like another backends.

Fix a crash in XCloseDisplay

XCloseDisplay crashes test program with no useful stack. Debugging shows that ATI fglx driver sets a callback for closing display event, but when display is closing that callback points to a wrong memory.

Separate class metainformation from main source

For now, compile-time metainformation extensions for script languages are included in source if the ___INANITY_META_<script>___ macros are defined (for now it is only ___INANITY_META_LUA___). ___INANITY_META_* macros have to be defined globally for Inanity libraries and a project which uses Inanity. In fact, the Lua support is hard-to-disable: commenting out ___INANITY_META_LUA___ from meta/Extension.hpp is not a good way to remove dependency.

Proposed enhancement is to separate defining of metainformation classes from the main source. Compile-time extensions are actually needed only in a code which work with scripts. So, I need to extract all META_CLASS/META_METHOD/... macros out of main source files, and move them to special include files, which are intended to be included in only source file in the executable. ___INANITY_META_* macros will all needed for this only source file, but not for the whole project.

CompressedFileSystem

Make a filtering file system which individually compresses files before giving data to underlying file system.

Do something with vertex-pixel shader linkage on DX11

Because of DirectX11's crazy linkage system we need to list all vertex shader's interpolates in pixel shader. Otherwise we will get Direct3D error about invalid linkage because output variables from vertex shader and input variables from pixel shader are set to different "hardware" registers. Maybe it is possible to workaround this automatically rather than manually, or invent some new abstraction like shader-stage interface.

Investigate possibility of Scheme binding

Gambit looks like very good candidate for binding to. It provides interpreter as well as Scheme-to-C compiler. We could use interpreter for fast write-and-run cycles and compiler for release performance.

Emscripten build

Add support for building for browsers with emscripten.
Requirements:

  • general - should compile under clang
  • graphics - should use WebGL-subset of OpenGL (related task is #8) plus fullscreen API
  • input - should be done with javascript library (for mouse could use pointer-lock API)
  • Platform::FileSystem - should use C++ standard library functions
  • Javascript bindings - may be simplified for emscripten, at least whole V8 machine isn't needed :) But we can use the same scripting abstraction as for Lua and V8, to inter-operate with "native" javascript
  • audio - use Web Audio API

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.