Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b2970b3
I have created the `RayTracingPipeline.java` file with the basic stru…
google-labs-jules[bot] Oct 10, 2025
47f50ea
Fix Gradle build errors in RayTracingPipeline.java
google-labs-jules[bot] Oct 10, 2025
6a08ea0
Merge pull request #1 from temotskipa/fix-build-errors
temotskipa Oct 10, 2025
80ec65a
WIP: save progress on rendering refactor
google-labs-jules[bot] Oct 10, 2025
b327e55
Merge pull request #3 from temotskipa/wip/refactor-state-save
temotskipa Oct 10, 2025
3e880dd
Fix ray tracing shader binding table setup
temotskipa Oct 24, 2025
4722c45
Merge pull request #4 from temotskipa/codex/fix-ray-tracing-implement…
temotskipa Oct 24, 2025
92fd9ed
Update Fabric toolchain for 1.21.10
temotskipa Oct 24, 2025
3f2747e
Merge pull request #5 from temotskipa/codex/update-gradle-wrapper-and…
temotskipa Oct 24, 2025
f16866f
Document genSource workflow for Mojang mappings
temotskipa Oct 24, 2025
a9fd053
Merge pull request #6 from temotskipa/codex/refactor-renderer-for-new…
temotskipa Oct 24, 2025
ce79907
Improved documentation
Oct 24, 2025
a4383bd
Added AGENTS.md
Oct 24, 2025
e9ffae3
Started refactoring the rendering pipeline
Oct 25, 2025
1e20aac
Continuing renderer refactor
temotskipa Oct 25, 2025
0c6ec2c
Delete net/minecraft/client directory
temotskipa Oct 25, 2025
fdeb3b4
Adapt renderer glue to 1.21 API changes
temotskipa Oct 25, 2025
bdcd74d
Align terrain pipeline with 1.21 chunk API
temotskipa Oct 25, 2025
0830e6c
Add accessor for GlDevice shader compilation key
temotskipa Oct 25, 2025
fc90f81
Drop unused custom ModelPart cube wrapper
temotskipa Oct 25, 2025
a5a14fd
Added HiddenGLContext, continuing to fix mixin issues
temotskipa Oct 25, 2025
02ba821
Add Parchment support and GL bridge fixes
temotskipa Oct 26, 2025
07e8f70
Reformatted the code
temotskipa Oct 26, 2025
9e4a9e6
Restored unwanted .yml and .md changes to previous state
temotskipa Oct 26, 2025
8f6c724
Added safer memory access methods using FFM
temotskipa Oct 31, 2025
1ef6143
Changed .gitignore
temotskipa Oct 31, 2025
3230c16
Started refactoring the code to use FFM and remove hacks like HiddenG…
temotskipa Oct 31, 2025
0bdbaea
Switch to `configureEach` for configurations to improve build script …
temotskipa Oct 31, 2025
d643c26
Refactor `EncodingFormat` constants and reformat `README.md` for bett…
temotskipa Oct 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,10 @@ bin/
# fabric

run/

# minecraft

net/minecraft/
!net/vulkanmod/
*.log
*:Zone.Identifier
24 changes: 16 additions & 8 deletions README.md
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes are also worthless and beside the goal. The Readme would even look the same as before.

Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# <a href="https://github.com/xCollateral/VulkanMod"> <img src="./src/main/resources/assets/vulkanmod/Vlogo.png" width="30" height="30"/> </a> VulkanMod

This is a fabric mod that introduces a brand new **Vulkan** based voxel rendering engine to **Minecraft java** in order to both replace the default OpenGL renderer and bring performance improvements.
This is a fabric mod that introduces a brand new **Vulkan** based voxel rendering engine to **Minecraft java** in order
to both replace the default OpenGL renderer and bring performance improvements.

### Why?

- Highly experimental project that overhauls and modernizes the internal renderer for Minecraft. <br>
- Updates the renderer from OpenGL 3.2 to Vulkan 1.2. <br>
- Provides a potential reference for a future-proof Vulkan codebase for Minecraft Java. <br>
Expand All @@ -14,6 +16,7 @@ This is a fabric mod that introduces a brand new **Vulkan** based voxel renderin
[![Demostration Video](http://img.youtube.com/vi/sbr7UxcAmOE/0.jpg)](https://youtu.be/sbr7UxcAmOE)

## FAQ

- Remember to check the [Wiki](https://github.com/xCollateral/VulkanMod/wiki) we wrote before asking for support!

## Installation
Expand All @@ -27,11 +30,13 @@ This is a fabric mod that introduces a brand new **Vulkan** based voxel renderin
- [![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/xCollateral/VulkanMod/total?style=flat-square&logo=github&label=Github%20Downloads)](https://github.com/xCollateral/VulkanMod/releases)

### Install guide:
>1) Install the [fabric modloader](https://fabricmc.net).

> 1) Install the [fabric modloader](https://fabricmc.net).
>1) Download and put the `Vulkanmod.jar` file into `.minecraft/mods`
>1) Enjoy !

## Useful links

<table>
<tr>
<th> Discord server</th>
Expand All @@ -51,27 +56,30 @@ This is a fabric mod that introduces a brand new **Vulkan** based voxel renderin
</tr>
</table>


## Features

### Optimizations:
>- [x] Multiple chunk culling algorithms

> - [x] Multiple chunk culling algorithms
>- [x] Reduced CPU overhead
>- [x] Improved GPU performance
>- [x] Indirect Draw mode (reduces CPU overhead)
>- [x] Chunk rendering optimizations

### New changes:
>- [x] Native Wayland support

> - [x] Native Wayland support
>- [x] GPU selector
>- [x] Windowed fullscreen mode
>- [x] Revamped graphic settings menu
>- [x] Resizable render frame queue
>- [ ] Shader support
>- [ ] Removed Herobrine


## Notes
- This mod is still in development, please report issues in the [issue tab](https://github.com/xCollateral/VulkanMod/issues) with logs attached!
- This mode isn't just "minecraft on vulkan" (e.g: [zink](https://docs.mesa3d.org/drivers/zink.html) ), it is a full rewrite of the minecraft renderer.

- This mod is still in development, please report issues in
the [issue tab](https://github.com/xCollateral/VulkanMod/issues) with logs attached!
- This mode isn't just "minecraft on vulkan" (e.g: [zink](https://docs.mesa3d.org/drivers/zink.html) ), it is a full
rewrite of the minecraft renderer.

251 changes: 140 additions & 111 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,111 +1,140 @@
plugins {
id 'fabric-loom' version '1.9.2'
id 'maven-publish'
}

version = project.mod_version
group = project.maven_group

base {
archivesName = project.archives_base_name
}

loom {
accessWidenerPath = file("src/main/resources/vulkanmod.accesswidener")
}

dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

ext.includeModule = { name ->
var module = fabricApi.module(name, project.fabric_version)
modImplementation(module)
include(module)
}

includeModule("fabric-api-base")
includeModule("fabric-resource-loader-v0")
includeModule("fabric-rendering-v1")
includeModule("fabric-renderer-api-v1")
includeModule("fabric-rendering-fluids-v1")
includeModule("fabric-rendering-data-attachment-v1")
includeModule("fabric-block-view-api-v2")
}

project.ext.lwjglVersion = "3.3.3"
project.ext.jomlVersion = "1.10.4"
project.ext.winNatives = "natives-windows"
project.ext.linuxNatives = "natives-linux"
project.ext.macosNatives = "natives-macos"
project.ext.macosArmNatives = "natives-macos-arm64"

dependencies {
include(implementation("org.lwjgl:lwjgl-vulkan:$lwjglVersion"))

ext.includeNatives = { name ->
include(implementation("$name:$lwjglVersion"))
include(runtimeOnly("$name:$lwjglVersion:$winNatives"))
include(runtimeOnly("$name:$lwjglVersion:$linuxNatives"))
include(runtimeOnly("$name:$lwjglVersion:$macosNatives"))
include(runtimeOnly("$name:$lwjglVersion:$macosArmNatives"))
}

includeNatives("org.lwjgl:lwjgl-vma")
includeNatives("org.lwjgl:lwjgl-shaderc")

//MoltenVK
include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives"))
include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives"))
}

processResources {
inputs.property "version", project.version

filesMatching("fabric.mod.json") {
expand "version": project.version
}
}

tasks.withType(JavaCompile).configureEach {
it.options.release = 21
}

java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()

sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

jar {
from("LICENSE") {
rename { "${it}_${project.base.archivesName.get()}"}
}
}

// configure the maven publication
publishing {
publications {
create("mavenJava", MavenPublication) {
artifactId = project.archives_base_name
from components.java
}
}

// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
plugins {
id 'fabric-loom' version '1.11.8'
id 'maven-publish'
}

version = project.mod_version
group = project.maven_group

base {
archivesName = project.archives_base_name
}

repositories {
mavenCentral()
maven {
name = "ParchmentMC"
url = "https://maven.parchmentmc.org"
content {
includeGroup("org.parchmentmc.data")
}
}
maven {
name = "LWJGL Snapshots"
url = "https://central.sonatype.com/repository/maven-snapshots"
}
}

loom {
accessWidenerPath = file("src/main/resources/vulkanmod.accesswidener")
}

configurations.configureEach {
resolutionStrategy {
force "org.lwjgl:lwjgl:3.4.0-SNAPSHOT"
force "org.lwjgl:lwjgl-glfw:3.4.0-SNAPSHOT"
force "org.lwjgl:lwjgl-jemalloc:3.4.0-SNAPSHOT"
force "org.lwjgl:lwjgl-openal:3.4.0-SNAPSHOT"
force "org.lwjgl:lwjgl-freetype:3.4.0-SNAPSHOT"
force "org.lwjgl:lwjgl-stb:3.4.0-SNAPSHOT"
}
}

dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.layered {
officialMojangMappings()
parchment("org.parchmentmc.data:parchment-${project.minecraft_version}:${project.parchment_version}@zip")
}
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

ext.includeModule = { name ->
var module = fabricApi.module(name, project.fabric_version)
modImplementation(module)
include(module)
}

includeModule("fabric-api-base")
includeModule("fabric-resource-loader-v0")
includeModule("fabric-rendering-v1")
includeModule("fabric-renderer-api-v1")
includeModule("fabric-rendering-fluids-v1")
includeModule("fabric-data-attachment-api-v1")
includeModule("fabric-block-view-api-v2")
}

project.ext.lwjglVersion = "3.4.0-SNAPSHOT"
project.ext.jomlVersion = "1.10.8"
project.ext.winNatives = "natives-windows"
project.ext.linuxNatives = "natives-linux"
project.ext.macosNatives = "natives-macos"
project.ext.macosArmNatives = "natives-macos-arm64"

dependencies {
include(implementation("org.lwjgl:lwjgl-vulkan:$lwjglVersion"))

ext.includeNatives = { name ->
include(implementation("$name:$lwjglVersion"))
include(runtimeOnly("$name:$lwjglVersion:$winNatives"))
include(runtimeOnly("$name:$lwjglVersion:$linuxNatives"))
include(runtimeOnly("$name:$lwjglVersion:$macosNatives"))
include(runtimeOnly("$name:$lwjglVersion:$macosArmNatives"))
}

includeNatives("org.lwjgl:lwjgl-vma")
includeNatives("org.lwjgl:lwjgl-shaderc")

//MoltenVK
include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosNatives"))
include(runtimeOnly("org.lwjgl:lwjgl-vulkan:$lwjglVersion:$macosArmNatives"))
}

processResources {
inputs.property "version", project.version

filesMatching("fabric.mod.json") {
expand "version": project.version
}
}

tasks.withType(JavaCompile).configureEach {
it.options.release = 25
}

java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()

sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}

jar {
from("LICENSE") {
rename { "${it}_${project.base.archivesName.get()}" }
}
}

// configure the maven publication
publishing {
publications {
create("mavenJava", MavenPublication) {
artifactId = project.archives_base_name
from components.java
}
}

// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
19 changes: 9 additions & 10 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx3G
org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21.1
yarn_mappings=1.21.1+build.3
loader_version=0.16.10

minecraft_version=1.21.10
yarn_mappings=1.21.10+build.2
loader_version=0.17.3
# Fabric API
fabric_version=0.114.0+1.21.1

fabric_version=0.136.0+1.21.10
# Mod Properties
mod_version = 0.5.4-dev
maven_group = net.vulkanmod
archives_base_name = VulkanMod_1.21.1
mod_version=0.5.4-dev
maven_group=net.vulkanmod
archives_base_name=VulkanMod_1.21.10
# Tooling
parchment_version=2025.10.12
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Loading