2021-06-19 07:52:33 +02:00
|
|
|
<div align="center">
|
2021-06-20 01:52:23 +02:00
|
|
|
<img src="https://i.imgur.com/yVFgPpr.png" alt="Logo by @voxel_dani on Twitter" width="250">
|
2021-06-19 07:52:33 +02:00
|
|
|
<h1>Flywheel</h1>
|
|
|
|
<h6>A modern engine for modded Minecraft.</h6>
|
2021-12-15 07:00:44 +01:00
|
|
|
<a href='https://ci.tterrag.com/job/Flywheel/job/Forge/job/1.18/'><img src='https://ci.tterrag.com/job/Flywheel/job/Forge/job/1.18/badge/icon' alt="Jenkins"></a>
|
2021-06-22 19:05:31 +02:00
|
|
|
<a href="https://discord.gg/xjD59ThnXy"><img src="https://img.shields.io/discord/841464837406195712?color=5865f2&label=Discord&style=flat" alt="Discord"></a>
|
|
|
|
<a href="https://www.curseforge.com/minecraft/mc-mods/flywheel"><img src="http://cf.way2muchnoise.eu/486392.svg" alt="Curseforge Downloads"></a>
|
2021-06-19 07:52:33 +02:00
|
|
|
<br>
|
|
|
|
</div>
|
2021-06-22 19:17:48 +02:00
|
|
|
|
|
|
|
### About
|
2021-06-16 20:45:16 +02:00
|
|
|
|
2021-06-30 21:43:54 +02:00
|
|
|
The goal of this project is to provide tools for mod developers so they no longer have to worry about performance, or
|
|
|
|
limitations of Minecraft's archaic rendering engine. That said, this is primarily an outlet for me to have fun with
|
|
|
|
graphics programming.
|
2021-06-16 20:45:16 +02:00
|
|
|
|
2021-06-19 07:52:33 +02:00
|
|
|
### Instancing
|
2021-06-16 20:45:16 +02:00
|
|
|
|
2021-06-30 21:43:54 +02:00
|
|
|
Flywheel provides an alternate, unified path for entity and tile entity rendering that takes advantage of GPU
|
|
|
|
instancing. In doing so, Flywheel gives the developer the flexibility to define their own vertex and instance formats,
|
|
|
|
and write custom shaders to ingest that data.
|
2021-06-16 20:45:16 +02:00
|
|
|
|
2021-06-19 07:52:33 +02:00
|
|
|
### Shaders
|
2021-06-20 01:52:23 +02:00
|
|
|
|
2021-06-30 21:43:54 +02:00
|
|
|
To accomodate the developer and leave more in the hands of the engine, Flywheel provides a custom shader loading and
|
|
|
|
templating system to hide the details of the CPU/GPU interface. This system is a work in progress. There will be
|
|
|
|
breaking changes, and I make no guarantees of backwards compatibility.
|
2021-06-20 01:52:23 +02:00
|
|
|
|
|
|
|
### Plans
|
2021-06-22 19:05:31 +02:00
|
|
|
|
2021-06-30 21:43:54 +02:00
|
|
|
- Vanilla performance improvements
|
|
|
|
- Compute shader particles
|
|
|
|
- Deferred rendering
|
|
|
|
- Different renderers for differently aged hardware
|
2021-06-22 19:05:31 +02:00
|
|
|
|
|
|
|
### Getting Started (For Developers)
|
|
|
|
|
2021-07-01 02:02:28 +02:00
|
|
|
Add the following repo and dependency to your `build.gradle`:
|
2021-06-30 21:43:54 +02:00
|
|
|
|
2021-06-22 19:05:31 +02:00
|
|
|
```groovy
|
|
|
|
repositories {
|
|
|
|
maven {
|
|
|
|
name "tterrag maven"
|
|
|
|
url "https://maven.tterrag.com/"
|
|
|
|
}
|
|
|
|
}
|
2021-07-01 02:02:28 +02:00
|
|
|
|
|
|
|
dependencies {
|
2024-05-25 21:06:11 +02:00
|
|
|
compileOnly fg.deobf("dev.engine_room.flywheel:flywheel-forge-api-${minecraft_version}:${flywheel_version}")
|
|
|
|
runtimeOnly fg.deobf("dev.engine_room.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}")
|
2021-07-01 02:02:28 +02:00
|
|
|
}
|
2021-06-22 19:05:31 +02:00
|
|
|
```
|
2024-05-11 03:20:35 +02:00
|
|
|
`${flywheel_version}` gets replaced by the version of Flywheel you want to use, eg. `1.0.0-beta`
|
2024-05-25 21:06:11 +02:00
|
|
|
|
2024-05-11 03:20:35 +02:00
|
|
|
`${minecraft_version}` gets replaced by the version of Minecraft you're on, eg. `1.20.1`
|
2021-06-22 19:05:31 +02:00
|
|
|
|
2021-11-27 20:31:50 +01:00
|
|
|
For a list of available Flywheel versions, you can check [the maven](https://maven.tterrag.com/com/jozufozu/flywheel/Flywheel-Forge/).
|
2021-06-30 21:43:54 +02:00
|
|
|
|
2021-07-01 02:02:28 +02:00
|
|
|
If you aren't using mixed mappings (or just want to be safe), add the following properties to your run configurations:
|
2021-06-22 19:05:31 +02:00
|
|
|
```groovy
|
2021-07-01 02:02:28 +02:00
|
|
|
property 'mixin.env.remapRefMap', 'true'
|
|
|
|
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
|
2021-06-22 19:05:31 +02:00
|
|
|
```
|
2021-07-01 02:02:28 +02:00
|
|
|
This ensures that Flywheel's mixins get properly loaded in your dev env.
|