Skip to content

Minecraft 1.12.2 Renderbook

This section aims to serve as a tutorial for Minecraft 1.12.2 rendering, but you can also expect general OpenGL, LWJGL, engine design ideas to be explained.

Note: You are free to copy any examples from this repo, but follow MIT license still.

Intro To GL States

Rotation

Alpha & Blending

Stencil


You are now expected to be pretty experienced with HUD/UI rendering after "Intro To GL States", "Rotation", "Alpha & Blending", "Stencil".
Time to test/experiment with some HUD/UI rendering thingy!

Continue reading when you are confident with UI drawing and even fancy animations.


From now on, you can expect deeper and more "serious" GL contents.

The major issue with the fixed-func pipeline is not only how it's "fixed-func'd" but also how the pipeline is non-scalable and fragile. A better alternative is the modern programmable pipeline (generally considered as GL30+), where streamlining data and rendering is made possible by VAO, Shader, etc.

A programmable pipeline is not essentially needed because it's faster. Don't be lured by micro-optimizations. We all care more about the structural wise modularity and scalability.

NIO ByteBuffer

Here are some major Concerns

GL Execution Model

  1. Command Data Flow
  2. Command Order
  3. Common Synchronizations

Key point: Now you've understood that OpenGL isn't merely about the correct command combinations; "Nothing" is necessarily guaranteed by CPU side method calls, and things work not necessarily because you've done the correct thing.

Intro To RAW/WAR Hazards

They are read-after-write and write-after-read hazards


You are now expected to be OK with shaders, draw calls, execution model, etc. It's recommended to design and implement your own pipeline that streamlines something with the techniques you learned.


Unit Test

It's recommended to set up an OpenGL test environment first so you'll be able to verify any kinds of ideas, edge cases, etc.
JUnit OpenGL Extension

Nsight Graphics

Minecraft 1.12.2 runs on the compat profile and Nsight works with the compat profile. You'll be able to use RenderDoc only if an emulation (emulate fixed-func pipeline with modern programmable pipeline) layer is done, but still... emulation emulates.

Contributors

© 2024 CleanroomMC. All Rights Reserved.