Dieser Artikel ist über die Eingebauten Shader.
Shader werden verwendet, um darzustellen, wie das Spiel gerendert wird.
Java Edition[]
Es gibt zwei Arten von Shadern: core shader und post-processing shader.
Core shader werden zum Rendern von verschiedenen Teilen des Spiels verwendet.
Post-processing shader werden für die Mob Ansicht im Zuschauermodus verwendet, mischen von durchscheinenden Ebenen in Fabulous! Grafikeinstellungen, und für den Leuchten Status effect.
Shader sind in der OpenGL Shading Language (GLSL) geschrieben. Jedes einzelne Render Programm kommt in zwei Teilen, vertex and fragment Shader. Der vertex Shaders ändert die Positionen von einzelnen Vertices zum erstellen von wehendem Laub und Wasser verwendet. Der Fragment shader wird auf jeden Pixel angewandt und kann für Dinge wie Bloom und Blur verwendet werden.
Shader werden im Ordner assets/minecraft/shaders/ in der minecraft.jar gespeichert und kann mit einem resource pack verändert werden. Wenn irgendein Fehler passiert, werdem das Resourcenpacket und fabulous graphics Modus ausgeschaltet.
Core shader[]
Core shader sind für das Rendern von Teilen des Spiels verantwortlich. Sie werden nicht nur zum Rendern von Blöcken, sondern auch für den Hauptbildschirm, Einstellungen uä. verwendet.
Jeder core shader ist ein eigenes render program, das in einer JSON-Datei definiert wird, in welchem Vertex und Fragment Shader bestimmt sind.
Core shader sind im assets/minecraft/shaders/core Ordner der minecraft.jar Datei hinterlegt.
Die folgende Tabelle listet alle Layers auf und beinhaltet eine kurze Beschreibung, was der Shader rendert, genau wie ein Bild, das das Ziel des Shaders in Rot vorhebt.
Diese Seite ist unvollständig. Du kannst helfen, indem Du sie ergänzt. Fehlende Inhalte:
|
Non-rendertype[]
Rendertype[]
Blocks[]
Name | Beschreibung | Beispielbild |
---|---|---|
rendertype_beacon_beam | Der Strahl des Leuchtfeuers | |
rendertype_crumbling | Die Risse beim Abbauen eines Blocks | |
rendertype_cutout | Alle Blöcke, die nicht die normale Hitbox haben. | |
rendertype_cutout_mipped | Einige Blöcke: Grass Blöcke, Eisenstangen, Glasscheiben, Stolperdrahthaken, Trichter, Ketten (Blätter bei Fancy oder Faboulos Grafikeinstellungen) | |
rendertype_end_gateway | Unknown. | |
rendertype_end_portal | Das innere eines Endportals und Transitportalen. | |
rendertype_solid | Alle Soliden Blöcke, Lava und im Fast Modus auch Blätter | |
rendertype_translucent | Durchsichtige Blöcke: Wasser (still und fließend), Eis, Nether Portal, Buntes und Getöntes Glass, Schleim und Honig, Luftblasen. | |
rendertype_translucent_moving_block | Durchsichtige, von Blöcken bewegte Blöcke. | |
rendertype_translucent_no_crumbling | Unknown. | |
rendertype_tripwire | Stolperdraht(Der mit dem Stolperdrahthaken verbundene Teil wird als Solider Block gerendert[1] | |
rendertype_water_mask | Unknown. |
Entities[]
Gemischtes[]
Include shader[]
Include-Shader sind keine eigenständigen Shader-Programme. Sie sollten von anderen Shader-Dateien implementiert werden.
Include-Shader enthalten häufig verwendete Hilfsfunktionen. Um eine glsl-Datei in einen Shader zu importieren, verwenden Sie #moj_import <FILENAME.glsl>
oder #moj_import "FILENAME.glsl"
. HINWEIS: Die importierte Datei muss mit einer leeren Zeile enden, sonst wird der Shader nicht geladen.
Core shader werden im Ordner assets/minecraft/shaders/include der minecraft.jar Datei gespeichert.
Name | Description |
---|---|
fog | Beinhaltet die linear_fog Funktion, um die Farbe nach der Vertex Entfernung berechnet.
|
light | Beinhaltet die minecraft_mix_light Funktion.
|
matrix | Beinhaltet die mat2_rotate_z Funktion, die die Rotations Matrix für einen vec2 um die z-Achse zurückgibt.
|
projection | Beinhaltet die projection_from_position Funktion.
|
Post-processing shader[]
Post-processing shader werden zurzeit für die Mob Ansicht im Zuschauermodus verwendet, mischen von durchscheinenden Ebenen in Fabulous! Grafikeinstellungen, und für den Leuchten Status effect.
Post-Shader verwenden "Post"-Dateien, um eine Pipeline zu definieren, die aus der Anwendung einer Sequenz von "Programmen" besteht.
Jedes „Programm“ wird dann durch eine andere JSON-Datei definiert, in der ein einzelnes Renderprogramm definiert ist.
„post“-Dateien werden im Verzeichnis assets/minecraft/shaders/post
der Version .jar gespeichert, während „Programm“-Dateien in assets/minecraft/shaders/program
gespeichert werden.
There are only 5 post-processing shaders used in the game:
- creeper.json: Used when spectating a creeper
- invert.json: Used when spectating an enderman
- spider.json: Used when spectating a spider
- entity_outline.json: Used when a glowing entity is on screen
- transparency.json: Used when in "Fabulous!" graphics mode.
Im Spiel werden nur 5 Nachbearbeitungs-Shader verwendet:
- creeper.json: Wird verwendet, wenn ein Creeper beobachtet wird
- invert.json: Wird beim Beobachten eines Enderman verwendet
- spider.json: Wird beim Betrachten einer Spinne verwendet
- entity_outline.json: Wird verwendet, wenn eine leuchtende Entität auf dem Bildschirm angezeigt wird
- transparency.json: Wird verwendet, wenn in "Fabulous!" Grafikmodus.
In diesen beiden Verzeichnissen gibt es auch viele nutzlose Shader, die vor 1.9 (15w31a) für "Super Secret Settings" verwendet wurden.
Render Prozess[]
Diese Seite ist unvollständig. Du kannst helfen, indem Du sie ergänzt. Fehlende Inhalte: Die Erklärung des Render Prozesses fehlt
|
Datei format[]
Render Programm[]
- data Der Root Tag
- blend: Einstellungen für Opengl mischen.
- func: Beim Mischen zu verwendender Operator. Kann
add
,subtract
,reversesubtract
,reverse_subtract
,min
odermax
sein. Groß-/Kleinschreibung nicht beachten. Standard:add
. Wird alsmode
Parameter vonglBlendEquation
verwendet - srcrgb: Verwendet als
sfactor
Parameter vonglBlendFunc
oder demsrcRGB
Parameter vonglBlendFuncSeparate
. Kann0
,1
,srccolor
,1-srccolor
,dstcolor
,1-dstcolor
,srcalpha
,1-srcalpha
,dstalpha
, oder1-dstalpha
sein. Groß-/Kleinschreibung nicht beachten. Ignoriert "_". "1", "0", "-" kann durch "one", "zero", "minus" ersetzt werden. - dstrgb: Verwendet als
dfactor
Parameter vonglBlendFunc
oder demdstRGB
Parameter vonglBlendFuncSeparate
. Kann0
,1
,srccolor
,1-srccolor
,dstcolor
,1-dstcolor
,srcalpha
,1-srcalpha
,dstalpha
, oder1-dstalpha
sein. Groß-/Kleinschreibung nicht beachten. Ignoriert "_". "1", "0", "-" kann durch "one", "zero", "minus" ersetzt werden. - srcalpha: Verwendet als
srcalpha
Parameter vonglBlendFuncSeparate
. Kann0
,1
,srccolor
,1-srccolor
,dstcolor
,1-dstcolor
,srcalpha
,1-srcalpha
,dstalpha
, oder1-dstalpha
sein. Groß-/Kleinschreibung nicht beachten. Ignoriert "_". "1", "0", "-" kann durch "one", "zero", "minus" ersetzt werden. - dstalpha: Verwendet als
dstalpha
Parameter vonglBlendFuncSeparate
. Kann0
,1
,srccolor
,1-srccolor
,dstcolor
,1-dstcolor
,srcalpha
,1-srcalpha
,dstalpha
, oder1-dstalpha
sein. Groß-/Kleinschreibung nicht beachten. Ignoriert "_". "1", "0", "-" kann durch "one", "zero", "minus" ersetzt werden.
- func: Beim Mischen zu verwendender Operator. Kann
- cull: Wenn "true", führe
glEnable(GL_CULL_FACE)
aus. Wenn "false" führeglDisable(GL_CULL_FACE)
aus. Standard: "true". - vertex: Der Name (ohne Dateierweiterung) des zu verwendenden Vertex-Shaders.
- fragment: Der Name (ohne Dateierweiterung) des zu verwendenden Fragmentshaders.
- attributes: Vom Vertex-Shader zu verwendende Attribute.
- : Ein Attribut. Verfügbare Werte sind hard-coded.
- samplers: Eine Liste von Samplern, die in den Shadern verwendet werden können.
- : Ein Sampler.
- name: Der Name des Samplers.
- file:
- : Ein Sampler.
- uniforms: Eine Liste von Uniforms, die in den Shadern verwendet werden können.
- : Ein Uniform.
- name: Der Name der Uniform, auf den im GLSL-Code verwiesen wird. Einige Namen geben ein einheitliches spezielles Verhalten (Beachten Sie, dass diese folgenden speziellen Uniformen nicht in allen Shader-Programmen funktionieren):
- Time: Ein Wert von 0 bis 1, der die Zeit in Sekunden darstellt. Wird jede Sekunde zurückgesetzt.
- InSize: Die Breite und Höhe des Eingabepuffers in Pixeln.
- OutSize: Die Breite und Höhe des Ausgabepuffers in Pixeln.
- ModelViewMat: Die Modellansichtsmatrix.
- ProjMat: Die Projektionsmatrix.
- TextureMat: 4D-Matrix, die verwendet wird, um UVs für Item-Glint-Effekte zu transformieren
- ScreenSize: vec2 enthält die aktuelle Framebuffer-Breite und -Höhe, in dieser Reihenfolge
- ColorModulator: Ein globaler vec4 von Multiplikatoren, der aus dem Spielcode als Farbmultiplikator eingestellt werden kann
- Light0_Direction: Erste Lichtrichtung als vec3 für das Entity-Rendering
- Light1_Direction: Zweite Lichtrichtung, siehe Light0_Direction
- FogStart: Nebelstartabstand von der Kamera
- FogEnd: Nebelschlussabstand von der Kamera
- FogColor: vec4 Nebelfarbe
- LineWidth: Linienbreite, die zum Rendern von Drahtgitterlinien wie dem Blockauswahlrahmen und Debug-Hitboxen verwendet wird
- GameTime: Globale Zeit der Welt in Bruchteilen von Tagen
- ChunkOffset: Beim Rendern eines Chunk-Abschnitts der Versatz von der Kameraweltposition zum Basispunkt des Chunk-Abschnitts
- type: Die Art des Uniforms. Kann einer von
int
,float
,matrix4x4
,matrix3x3
undmatrix2x2
sein. int kann auch alsivec2
,ivec3
oderivec4
interpretiert werden, je nachdem, wie viele Werte tatsächlich in den Werten enthalten sind.float
kann auch alsvec2
,vec3
odervec4
interpretiert werden, je nachdem, wie viele Werte tatsächlich in den Werten enthalten sind.The type of the uniform. - count: Die Anzahl an Werten in
values
. - values: Der Wert des Uniforms, als Liste aus Floats. Die Länge der Liste sollte genau so lang sein, wie
count
.
- name: Der Name der Uniform, auf den im GLSL-Code verwiesen wird. Einige Namen geben ein einheitliches spezielles Verhalten (Beachten Sie, dass diese folgenden speziellen Uniformen nicht in allen Shader-Programmen funktionieren):
- : Ein Uniform.
- blend: Einstellungen für Opengl mischen.
Render Pipeline[]
So wird ein Nachbearbeitungs-Shader im Spiel verwendet: Zuerst initialisiert der Shader alle Renderziele, die in der Liste "targets" angegeben sind, mit der richtigen Breite und Höhe. Danach durchläuft der Shader jeden in der Liste "passes" angegebenen Renderdurchgang vom ersten bis zum letzten in der Liste. Jeder Durchgang wendet den Programm-Shader auf das durch "intarget" angegebene Renderziel an (mit allen zusätzlichen Daten, die von anderen zusätzlichen Renderzielen bereitgestellt werden) und gibt das Endergebnis auf dem durch "outtarget" angegebenen Renderziel aus.
- data Der Root-Tag
- targets: Eine Liste von Renderzielen. Sie können vom Spiel bereitgestellte Puffer oder neue Puffer mit einem beliebigen Namen sein.
- : Der Name eines Renderziels. Die Größe ist standardmäßig auf die Bildschirmauflösung eingestellt.
- : Ein hinzuzufügendes Renderziel.
- name: Der Name des hinzuzufügenden Renderziels.
- width: Die Breite des Renderziels.
- height: Die Höhe des Renderziels.
- passes: Eine Liste mit Passes.
- : Ein Render pass.
- name: Der Name eines Programmshaders, der auf die Eingabe angewendet und in die Ausgabe eingefügt werden soll. Verwenden Sie "blit", um die Daten von intarget nach outtarget zu kopieren.
- intarget: Der Name eines Renderziels, das als Eingabe verwendet werden soll. Verwenden Sie
minecraft:main
, um den Hauptbildschirm anzugeben. - outtarget: Der Name eines Renderziels, an das ausgegeben werden soll. Es sollte nicht mit intarget identisch sein. Verwenden Sie
minecraft:main
, um den Hauptbildschirm anzugeben. - auxtargets: Eine Liste von Hilfszielen.
- Ein Hilfsziel.
- name: Der Name des Hilfsziels, der an das JSON "Programm" übergeben wird.
- id: Die ID des Hilfsziels. Zeigt entweder auf den Namen eines Puffers, der in den Zielen definiert ist, oder auf die Position einer Textur unter
assets/<namespace>/textures/effect
(verwenden Sie eine Namespace-Id, um darauf zu verweisen). - width: Erforderlich, wenn
id
auf eine Textur verweist. Beschreibt die Breite der Textur in Pixeln. - height: Erforderlich, wenn
id
auf eine Textur verweist. Beschreibt die Höhe der Textur in Pixeln. - bilinear: Erforderlich, wenn
id
auf eine Textur verweist. Bestimmt, ob der für das Bild verwendete Skalierungsalgorithmus bilinear oder der nächste Nachbar ist.
- Ein Hilfsziel.
- uniforms: Eine Liste von Überschreibungen, die die Werte in der Liste
uniforms
im JSON "Programm" ändern.- : Ein Uniform.
- name: Der Name des Felds, das geändert werden soll.
- values: Die Werte, auf die das Feld geändert werden soll.
- : Ein Uniform.
- : Ein Render pass.
- targets: Eine Liste von Renderzielen. Sie können vom Spiel bereitgestellte Puffer oder neue Puffer mit einem beliebigen Namen sein.
Tutorials und nützliche Docs[]
Hier sind einige Anleitungen mit zusätzlichen Informationen zum Erstellen eigener Shader:
Bedrock Version[]
Diese Seite ist unvollständig. Du kannst helfen, indem Du sie ergänzt. Fehlende Inhalte: Nicht alle Infos
|
Seit Bedrock Edition 1.16.200 werden Shader-Ressourcenpakete von Drittanbietern nicht mehr auf Windows 10- oder Konsolenversionen unterstützt, obwohl sie weiterhin auf mobilen Geräten funktionieren.
Geschichte[]
Versionsgeschichte der Java Edition | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Probleme[]
Probleme Bezüglich "Shadern" sind beim Bug Tracker zu finden.