Coder Social home page Coder Social logo

gepard's People

Contributors

bzsolt avatar dati91 avatar dbatyai avatar elecro avatar kkristof avatar szledan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gepard's Issues

Setup Doxygen

Setup Doxygen environment.
Setup the doxigen.conf settings file.
Create a basic html page.

[meta] Add Vulkan suppport

This is the main tracker issue for the Vulkan related issues.
The following tasks (please keep it up to date):

  • Investigate the Vulkan API #8
  • Determine main components
  • Plan the implementation steps
  • fillRect
  • Image functions
  • Transformations
  • ClearRect
  • Path related functions
  • Clipping
  • Gradients

[meta] Low hanging fruits

This meta issue collects some easy feature issues tagged with LHF label.

Good luck! :)

1. Goodies
  • Renaming macros #68
  • Base surface #49 [#54]
    • PNG Surface
    • EGL Surface
    • Use smart pointers #51
    • Implement Path API part in GepardEngine (it's easy) #52
  • Create a simple fillRect example #44 [#54,]
  • Move util/gepard-types implementation from header to cpp #59
  • Append logging with an error macro #70 [#74]
2. Infrastucture (@dbatyai)
  • Improve build system
    • Guarding in cmake
      • Include only directories
  • Setup cppcheck [#55]
3. GLES2 features (@szledan, @kkristof)
  • Design a command queue & implement a base version
  • Design a shader factory & implement a base version
    • Create simple texture shader
    • Create simple rect shader
    • Shader collector
4. Vulkan features (@kkristof)
5. CPU simulated rendering (@szledan)

[meta] New design of the API

This issue tracks the state of the API refactoring, which was agreed during the GeCo 2017.

  • Move the existing Gepard API under the new Canvas API
  • Rename the GepardEngine to Gepard
  • Streamline the Gepard API
  • Expose the internal Gepard API
  • Refactor the build system
  • Update the examples to match with the new API

Linking issue when logging is enabled.

When I tried to enable the logger I got the following linker error.

$ tools/scripts/build.py -e --backend vulkan -d --log-level 1
...
[ 83%] Linking CXX shared library ../lib/libgepard.so
CMakeFiles/gepard.dir/utils/gepard-types.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gepard.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/gepard-path.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/vulkan/gepard-vulkan-instance.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/vulkan/gepard-vulkan.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
...

[meta] Documentation

This is the main tracker issue for documentations of Gepard.

We need to add documentation for the following ittems:

  • Public API Doc.
  • Internal API Doc.
  • Source code documentation.

Please use the Doxygen annotations in Gepard source code. (See.: www.doxygen.org)

It could be interesting: Gepard coding-style.

[vulkan] Compile the shaders at build time

The vulkan doesn't support the shader compilation in runtime, so currently the shader sources are compiled manually. It would be usefully to compile the SpirV binaries at compile time and store it in the library.

  • Add the glslang to the thirdparties
  • Add build step for the shader compilation.
  • Store the compiled SpirV binaries in the lib.

Append logging with an error macro

 #define LOG1(MSG)
 #define LOG2(MSG)
 #define LOG3(MSG)
+#define GD_LOG_ERR(MSG) // <-- send the MSG to the 'std::cerr' instead of 'std::cout'

[canvas2d] Implement context state

Add class which contains the current transformations, filling styles and other state related infos.
Also needs to support state save and restore function.

Re-think directory structure

The directory tree could use a second look, for example we should probably separate the different APIs into directories.

Use SMART pointers in API classes

Use STL or own smart pointers.
Example: unique/move pointer instead of GepardEngine* in gepard.h, or unique/move pointer instead of GepardEngineBackend* in gepard-engine.h, etc.

Update the readme

The current README.md is outdated since the build-system was reworked.
Please update the console snippets.

Improve the Readme

There are lots of room to improve the Readme, such as creating proper contributing description, provide better quickstart guide and document the build/run-time options.

[meta] Public API

This issue tracks the discussions and issues related to the public API.

  • Canvas2D API #10

Missing package

The build-essential package should be added to the dependencies.

If not installed the following error will occur when you try to build:
cmake fails with “CMake Error: your CXX compiler: ”CMAKE_CXX_COMPILER-NOTFOUND“ was not found.”

[canvas2d] Implement path drawing

Add support of the path object.

  • Integrate the public API part with Doxygen documentations. (version-0.0.1) #33
  • Add internal types of Path API. (version-0.0.1) #33
  • Add internal Path API with Doxygen documentations. (version-0.0.1) #33
  • Add GLES-2.0 support. (version-0.0.2)
    • Types.
    • Add Segment Approximator.
    • Add Trapezoid Tessellator.
    • Basic Pipeline for GLES2.
    • TODO(szledan): Finish this part.
  • Add VULKAN support.
    • Types.
    • TODO(szledan): Extend this part.

Improve build-system

Keep the make system for the developers.
Improve the build-system with a tools/scripts folder for general purpose scripts. Ex.: build-gepard, run-unit-tests, etc.

Please use python for the scripts.

Build cppcheck from source

Different platforms have different versions of cppcheck packaged, which is especially problematic on travis, where we have to use a very ancient one. We should build cppcheck from source as a dependency, so we get consistent error messages.

Logging system

We should design a simple logging system.

Criteria:

  • Simple usage and complex arguments [1]
  • Buildtime option: when is off then doesn't compile into the binary, otherwise
  • Runtime option: switch 0, 1, 2 or 3 level logging.

[1] Nitpicked example:

int x = 1;
void* ptr = Class::create();
Float value = ptr->fx(x) * x;
LOG1("The value is ptr[" << ptr << "].fx(x=" << x << ") * x = " << value << ".");

Implement GepardEngine Path API part in gepard-engine.cpp

It is very easy, similar to the gepard::GepardEngine::closePath().

Replace the NOT_IMPLEMENTED() macro to the corresponding call, and write some sentences in Doxygen comments instead of \todo unimplemented function.

File: ./src/gepard-engine.cpp

Extend README.md

Add more information about the project. (e.g. wiki, contributors, build)

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.