rayray VS mach

Compare rayray vs mach and see what are their differences.

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • SonarLint - Clean code begins in your IDE with SonarLint
  • Mergify - Updating dependencies is time-consuming.
rayray mach
1 33
127 2,232
- 10.8%
3.5 9.2
over 2 years ago about 20 hours ago
Zig Zig
- GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

rayray

Posts with mentions or reviews of rayray. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-04-25.

mach

Posts with mentions or reviews of mach. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-10.
  • New Béziers from Math
    5 projects | news.ycombinator.com | 10 Sep 2023
    Cool to see others working on this problem. I hope more people do.

    Funnily I've seen a lot of programmers and math folks who express how truly, genuinely beautiful Beziers and the math behind them are. But I've never met an artist or graphic designer who didn't express some deep frustration at Bezier controls and how hard they are to work with.

    There are even games[0] which make a mockery out of how hard Bezier controls are to use, where the game is purely using the controls.

    Controls are just one side of the problem, in my view; the other side is that cubics are terrible for GPUs, they don't understand them - and I believe many of the best 2D graphics libraries today are not even fully GPU accelerated, e.g. Skia. There are folks working on compute shader-based approaches, where we try to shoe-horn this CPU-focused algorithm into GPUs and pray - but it still isn't really suitable.

    The controls suck for artists, and the math sucks for GPUs. This is only true of cubics, if you restrict yourself to quadratics (although that brings other challenges), both the control issue goes away (you can just click+drag the curve!) and the performance issue goes away (quadratics are triangles, GPUs love them)

    That's the summary of the talk[1] I gave at SYCL'22. In that talk, I didn't have time to present the downsides of quadratics (which are real) - so if you watch it please keep that in mind - but my overall point I think is a solid one: the controls suck, and GPUs can't handle them.

    The only reason we stick with cubics in its current form is because of SVG, compatibility with existing tooling, etc. But isn't it crazy? We have new bitmap image formats all the time, and so few vector graphics formats.

    In Mach engine[2] we're continuing to explore this space, end-to-end, from author tooling -> format -> rendering. I'm not claiming we have a perfect solution, we don't, but we're at least thinking about this problem. Kudos to the authors of this article for thinking about this space as well.

    [0] https://bezier.method.ac/

    [1] https://www.youtube.com/watch?v=QTybQ-5MlrE

    [2] https://machengine.org

  • 0.11.0 Release Notes
    12 projects | news.ycombinator.com | 3 Aug 2023
    A game engine https://machengine.org is being written in zig, there's also https://microzig.tech as zig is well suited to embedded development.
  • Significant examples of Zig software (June 2023)?
    7 projects | /r/Zig | 6 Jun 2023
    https://github.com/hexops/mach (shameless plug)
  • Learn WebGPU
    9 projects | news.ycombinator.com | 27 Apr 2023
    Zig fits pretty naturally here too. We've got ~19 WebGPU examples[1] which use Dawn natively (no browser support yet), and we build it using Zig's build system so it 'just works' out of the box with zero fuss as long as you grab a recent Zig version[2]. No messing with cmake/ninja/depot_tools/etc.

    WASM support in Zig, Rust, and C++ is also not equal. C++ prefers Emscripten which reimplements parts of popular libraries like SDL, for me personally that feels a bit weird as I don't want my compiler implementing my libraries / changing how they behave. Rust I believe generally avoids emscripten(?), but Zig for sure lets me target WASM natively and compile C/C++ code to it using the LLVM backend and soon the custom Zig compiler backend.

    [1] https://github.com/hexops/mach-examples

    [2] https://github.com/hexops/mach#supported-zig-version

  • Zig for gamedev?
    7 projects | /r/Zig | 15 Apr 2023
    Two game frameworks in the making: https://github.com/michal-z/zig-gamedev & https://github.com/hexops/mach
    7 projects | /r/Zig | 15 Apr 2023
    We're building Mach which aims to be competitive with Unity/Unreal/Godot in spriti, but super modular / let you pick and choose which parts to use or build yourself.
  • Mach (Zig) Adventures - Part 1
    2 projects | /r/Zig | 12 Apr 2023
    git clone --recursive https://github.com/hexops/mach-examples cd mach-examples/ zig build run-sprite2d
  • Chrome Ships WebGPU
    17 projects | news.ycombinator.com | 6 Apr 2023
    This is very welcome and a long time coming!

    If you're eager to learn WebGPU, consider checking out Mach[0] which lets you develop with it natively using Zig today very easily. We aim to be a competitor-in-spirit to Unity/Unreal/Godot, but extremely modular. As part of that we have Mach core which just provides Window+Input+WebGPU and some ~19 standalone WebGPU examples[1].

    Currently we only support native desktop platforms; but we're working towards browser support. WebGPU is very nice because it lets us target desktop+wasm+mobile for truly-cross-platform games & native applications.

    [0] https://github.com/hexops/mach

    [1] https://github.com/hexops/mach-examples/tree/main/core

  • Purego – A library for calling C functions from Go without Cgo
    6 projects | news.ycombinator.com | 12 Feb 2023
    Very cool! I will definitely give this a try, I've been looking to build Go bindings to Mach[0] soon.

    How does this work around the stack size problem? IIRC the reason CGO overhead exists is at least partly because goroutines only have an ~8k stack to start with, and the C code doesn't know how to expand it-so CGO calls "must" first have the goroutine switched to an OS thread which has an ~8MB stack.

    One reason I think Go <-> Zig could be a fantastic pairing is that Zig plans to add a builtin which tells you the maximum stack size of a given function[1], so you could grow the goroutine stack to that size and then call Zig (or, since Zig an compile C code, you could also call C with a tiny shim to report the stack required?) and then eliminate the goroutine -> OS thread switching overhead.

    [0] https://github.com/hexops/mach

    [1] https://github.com/ziglang/zig/issues/157

  • Just found out about Zig and wonder what would be the best graphics library to pair with it?
    5 projects | /r/Zig | 1 Feb 2023
    We're building Mach, which aims to be extremely modular, starting with letting you choose which path you take between:

What are some alternatives?

When comparing rayray and mach you can also consider the following projects:

SDL.zig - A shallow wrapper around SDL that provides object API and error handling

zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

zigstr - Zigstr is a UTF-8 string type for Zig programs.

arocc - A C compiler written in Zig.

mach-glfw-vulkan-example - mach-glfw Vulkan example

libfive - Infrastructure for solid modeling

river - A dynamic tiling Wayland compositor

matrix.to - A simple stateless privacy-protecting URL redirecting service for Matrix

ComLightInterop - Cross-platform COM interop library for .NET Core 2.1 or newer

quickjs-emscripten - Safely execute untrusted Javascript in your Javascript, and execute synchronous code that uses async functions

glibc_version_header - Build portable Linux binaries without using an ancient distro

winget-cli - WinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).