Giter Club home page Giter Club logo

echo's Issues

[Feature Request] Create struct Transform to replace Float4x4s

Is your feature request related to a problem? Please describe.
The Transform struct is an improvement to increase performance

Describe the solution you'd like
The Transform struct stores Float3x3s internally for rotation and translaton.
It can be multiplied with other Transforms just like a Float4x4.
It can be inverted like so: here
It can multiply with directions and positions.

[Feature Request] More Materials

After revamping essentially the entire Core.Evaluation system, we have created a strong architecture allowing for many different materials. However, currently we have only added two: Matte and Mirror. We need to implement more BxDF and Material to support a wider range of rendering scenarios and requirements.

[Bug] RGBA128.Parser Unit Tests Failing

Describe the bug
RGBA128.Parse and RGBA128.TryParse unit tests failing on edge cases.

To Reproduce
Steps to reproduce the behavior:

  1. Run the unit tests.
  2. See the errors.

Expected behavior

  • hdr(123, 45, 67, 89,) and hdr(-12, 3, 4) should fail.
  • rgb(1, 2, 3, 4.5) and rgb(-12, 3, 4) should fail.
  • hdr(.10, .001, .102) should pass with the expected value equalingnew RGBA128(0.1, 0.001, 0.102, 1)

Systems

  • OS: Windows 10
  • Hardware: AMD Ryzen 9 3900X
  • Version or Commit: 49b6f3d

Additional context
Add any other context about the problem here.

[Feature Request] Mesh reader integration

Is your feature request related to a problem? Please describe.
We need a universal way of feeding the streamed data from the various mesh format readers into Echo.Scenic, specifically, to the MeshEntity object. Additionally, this should also be an interface that allow us to efficiently feed mesh data into Echo from the outside (other code using Echo).

Describe the solution you'd like
A new interface that requires a ReadTriangle method which will allow the consumer to read the stream of triangles one by one. MeshEntity will use this interface to handle the request from Echo.Scenic during preparation. Since this interface will be implemented by many file loaders, it should also implement IDisposable, to give the loaders a way to dispose of their resources.

Additional context
Note that for the time being, we will not allow different triangles from the same mesh to have different Materials. Each triangle will simply contain 3 vertices, 3 normals, and 3 texture coordinates, with the latter two being optional.

[Feature Request] Echo Logo

Is your feature request related to a problem? Please describe.
We do not have a logo for Echo yet!

Describe the solution you'd like
make a logo.

[Feature Request] New Compositing System

After recreating basically the entire Core.Evaluation system, we have also broke the old post processing pipeline. Using the new Compute components, we need a new system that is executed after rendering is complete to composite together the different evaluations and enhance them into a single final image.

[Feature Request] Remove CodeHelpers Dependency

Is your feature request related to a problem? Please describe.
The Echo project relies heavily on my CodeHelpers library. While reusing code is certainly advantageous, originally CodeHelpers was designed to only be used by Unity projects. This dependency slowly became a large impediment to some of the new language features and optimizations. Furthermore, most a majority of the abilities provided by CodeHelpers is not used.

Describe the solution you'd like
Fork CodeHelpers and incorporate the library intrinsically.

Implement ParseRGB and ParseHDR for RGBA128.Parser

RGBA128.Parser is a ref struct that helps converting from a string that is representing a color into an actual RGBA128. It is designed to support three modes: HEX, RGB, and HDR. Currently the mode detection and HEX mode are already implemented, but the implementation for RGB and HDR are missing.


RGB mode:
Input string format rgb(123, 456, 789) where 123, 456, and 789 can be any integer between 0 (inclusive) and 256 (exclusive). After the preprocessing that determines the mode, the content field will contain the version with stripped prefix and postfix: 123, 456, 789. Determine the separation between each integer based on the comma , character. Note that there can be optional white spaces between the numbers and the commas. Use the YieldError method if any input error occurs.


HDR mode:
Similar input string format hdr(0.123, 0.456, 0.789) where 0.123, 0.456, and 0.789 can be any decimal larger than or equals to 0 (no upper bound). The content field will also contain the stripped version after preprocessing: 0.123, 0.456, 0.789. Optional white spaces are also allowed.


Implement the ParseRGB and ParseHDR methods in RGBA128.Parser.

[Feature Request] Improved readme

Is your feature request related to a problem? Please describe.
The old readme is outdated

Describe the solution you'd like
make a new readme

[Feature Request] Add support for .echo format

Is your feature request related to a problem? Please describe.
This is a critically needed file format to scene description in Echo.

Describe the solution you'd like
A loader for the new .echo format will be needed to be added and supported to use the various features Echo offers.

Additional context
Along with other features implemented in the preparation rewrite, this file format will complete most of the preprocessing work prior to the main rendering.

[Feature Request] New Asynchronous API to Echo.Core.Common.Compute

Is your feature request related to a problem? Please describe.
The Echo.Core.Common.Compute namespace works well for our main parallel rendering workload, however it needs to be more flexible for other applications such as pre-render compute or post-processing compositing.

Describe the solution you'd like
A new type of Operation<T> that supports the asynchronous programming paradigm through custom Task like async method wrappers.

Additional context
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.asyncvoidmethodbuilder

https://github.com/dotnet/roslyn/blob/main/docs/features/task-types.md

https://devblogs.microsoft.com/premier-developer/dissecting-the-async-methods-in-c/

[Feature Request] New Preparation System

Core.Scenic is the oldest system in Echo right now. We need to restructure a major part of it to support better a preparation phase prior to rendering. This rewrite will also involve a big change of Core.Aggregation to support light bounding volume hierarchies and removing virtual method invocations.

[Feature Request] Triangulation of all n-gons where n > 3

Is your feature request related to a problem? Please describe.
All Faces containing more than 3 vertices whill be incorrectly imported from the .ply file.

Describe the solution you'd like
If a n-gon with more than 3 vertices appears, it should be triangulated.

Describe alternatives you've considered
Let the blender plugin triangulate the meshes, but this could cause problems when creating/editing a .echo file outside of blender.

Additional context
Seems like a good starting points: https://www.youtube.com/watch?v=QAdfkylpYwc

[Feature Request] Optimizing and documenting the PolygonFileFormatReader

Is your feature request related to a problem? Please describe.
Looking at the PolygonFileFormatReader, there are a lot of things that can be improved in terms of performance, readability and documentation.

Describe the solution you'd like
The PolygonFileFormatReader should be able to load the default blender monkey head in less than 10ms, maybe in even less time

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.