Git Product home page Git Product logo

contributing's People

Contributors

hughsk avatar

Stargazers

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

Watchers

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

contributing's Issues

Swept surfaces

Would be nice to have tools for generating extrusions/sweeps along curves.

Path tracing in JavaScript?

Might be nice to have something like a path tracing module (this would be more a fun project rather than something serious at this point).

GPU algorithms

Would be nice to have glslify/webgl implementations of the following:

  • FFT
  • Sorting
  • Map-reduce / parallel prefix sum
  • Stream compaction

Other ideas may be adaptable from cudpp.

Uniform initialisation

Appears to not be supported in WebGL (or at least not my machine), though it's listed in the spec, e.g.:

uniform vec3 initialUniform = vec3(1.0, 0.0, 0.0);

This provides default values for uniforms which would be really nice for making more reusable shaders, but quite likely out of scope for gl-shader to shim. Maybe a wrapper package, or even a polyfill? Polyfill runs the risk of putting more burden on the package consumer, though also provides a leaner and more generic way of getting support across multiple frameworks/libraries.

Skeletal animation

Some projects

  • BVH file parser
  • Motion interpolation
  • Skinning routines
  • Motion graphs
  • Dynamic/adaptive controllers

UV unwrapping

Having some tools to simplify texture atlas generation would be nice.

gl-texture-cube

Likely tricky as gl-texture2d has to cover a lot of ground, but this would be super useful for enabling skyboxes (#4) and reflection/refraction among other things :)

Finish porting gl-matrix modules over

Still need:

  • gl-quaternion
  • gl-vec2
  • gl-vec3

Also nice to have:

  • Plucker coordinates for lines
  • Conic sections?
  • Maybe some module for working with exterior forms?

File parsers

We need more parsers for various 3D geometry formats. Eventually, it would also be nice to build some generic module that takes a simplicial complex and serializes it to various standard formats.

Type definitions?

Just curious if there's been any thought about adding TypeScript type definitions to these modules. One nice thing I still like about three.js is that there is a well-maintained .d.ts file, which makes working with TS and JS a lot more pleasant in modern editors like VSCode. VSCode can even infer types from standalone JS source files, but when you use require unfortunately it can't infer anything.

2D / 3D Text Rendering

This is a fairly big topic. Lots of ways to solve it.

applications / tools

  • typeface.js is old, no kernings etc
  • fontpath is pretty experimental
  • opentype.js seems pretty robust and well tested
  • SDF image generation - could be improved with a better algorithm
  • BMFont or Hiero for SDF / general purpose stuff
  • gdx-fontpack for tight packing / multi-page - would be nice to have NodeJS CLI versions and SDF integration

rendering

modules / utils

the fontpath modules are fairly experimental / scattered. Been using them on a couple projects but ideally I'd like to clean them up and rip some things out into their own generic interfaces.

Support instanced rendering

I'm interested in adding support for ANGLE_instanced_arrays. After a cursory look at the modules that might be involved, it's starting to look like this might need alterations to:

I'm wondering if anyone has taken a look at this issue yet and formed an idea of what needs to be done. If there's already a plan in place somewhere, I'd follow that. If not, I'd love any thoughts/pointers before I get started.

Pinging likely relevant parties ๐Ÿ˜ @mikolalysenko @hughsk

simplicial complexes / "meshtypes"

I think simplicial complexes are a good approach for modularity but they have some drawbacks:

  • "simplicial complex" is long-winded and intimidating; all of the search results related to it are extremely complex for somebody just trying to get a cube or sphere on screen
  • they generally don't provide 3D rendering features like UVs or normals (lighting/texturing)

I am experimenting with a torus-mesh module and it would be great to have UVs baked in (like in @TatumCreative's geo-3d-box). It would also be good to standardize naming (mesh.uvs, module name, etc).

Normals would also be handy. So far I am using normals and glsl-face-normal, which seems to work well. Are there instances where they might provide less than desirable results compared to using the normals generated with the mesh?

/cc @mikolalysenko @hughsk

WebVR

With WebVR picking up speed, it'd be interesting to start investigating supporting it with a small collection of modules. Namely:

  • Calculating the projection matrices for each eye of a HMD, as seen in WebVRRenderer.
  • Post-processing shaders for barrel distortion, vignettes, and shifting RGB channels.

Physics simulation

Possible applications include:

  • Particles
  • Fluids
  • Rigid bodies
  • Deformable objects/continuum mechanics

2D shapes / primitives

Lots of ways to solve this, often comes down to particular application and requirements (anti-aliasing, performance, polygon complexity, etc).

Some starting points...

lines / curves / arcs

SVG / complex polygons

  • code example
  • triangulation via #16
  • use stencil buffer like in Pixi (downside: no AA)

Surface simplification

Using either Hoppe or random decimation (as described by Kobbelt). This is a big project, but would have lots of applications in reducing meshes for transfer over the wire.

Related to this would be implementing POP buffers

Docs repo

Would be nice to have a single docs repo that brings together some stuff, like:

  • installing node/npm
  • creating a new module
  • explain best practices eg arrays vs objects for vector math
  • explain simplicial complex / idea behind it
  • higher level tutorials like lighting a mesh with glslify

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.