CaffeineMC / sodium

A Minecraft mod designed to improve frame rates and reduce micro-stutter
Other
4.77k stars 810 forks source link

Vertex ordering in entity rendering is different, breaking core shaders #2745

Closed ArubikU closed 1 month ago

ArubikU commented 1 month ago

Bug Description

Sodium load all the entity shaders correctly but changuing a bit the faces id`s causing some incompatibilities with "core shaders"

Expected behavior: image

Actual: image

Reproduction Steps

Pack for sodium example.zip example_skin

  1. Install the Resourcepack
  2. Apply the example skin what add wings

In vanilla the wings will be rendered correctly in sodium fail on the read of faces Method use in vertex to detect faces: int face = gl_VertexID / 4 % 6; Vanilla faces i identify:

define BOTTOM_FACE 0

define TOP_FACE 1

define RIGHT_FACE 2

define NORTH_FACE 3

define LEFT_FACE 4

define SOUTH_FACE 5

Log File

latest.log

Crash Report

crash-2024-09-12_17.26.57-client.txt

douira commented 1 month ago

I want to note that this is an issue with the entity data provided by sodium to the resource pack's core shader and not a matter of getting sodium to load a pack's terrain core shaders (since this isn't terrain). This was misunderstood in the preceding discussion on discord multiple times.

jellysquid3 commented 1 month ago

It would probably be enough to fix this issue if the ordering of constants here were changed to match Minecraft.

jellysquid3 commented 1 month ago

However, it is possible that future versions of Sodium will discard back-facing triangles when rendering entities, and that core shaders which rely on this specific ordering will be broken once again.

We do not support core shaders and we cannot guarantee that relying on extremely specific behavior like this will continue to work.