Skip to content

Commit 8052ac2

Browse files
committed
Add VBO draw diagnostics for sky rendering debugging
Log first N VBO draws per frame to track shader pipeline, render pass state, and modelview matrix values during sky rendering. Also log when draws are skipped due to missing render pass, which helps identify pipeline gaps where sky geometry is silently dropped.
1 parent a555e0c commit 8052ac2

1 file changed

Lines changed: 33 additions & 1 deletion

File tree

  • src/main/java/net/vulkanmod/render

src/main/java/net/vulkanmod/render/VBO.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public class VBO {
3131

3232
private boolean autoIndexed = false;
3333

34+
// Sky rendering diagnostics — log first N VBO draws per frame
35+
private static int skyLogCount = 0;
36+
private static final int SKY_LOG_MAX = 30; // total draws to log across all frames
37+
3438
public VBO() {}
3539

3640
public void upload(MeshData meshData) {
@@ -122,6 +126,28 @@ public void drawWithShader(Matrix4f MV, Matrix4f P, ShaderInstance shader) {
122126
((ShaderMixed) shader).updateUniformsOnly();
123127

124128
GraphicsPipeline pipeline = ((ShaderMixed) shader).getPipeline();
129+
130+
// Diagnostic: log VBO draws to track sky rendering
131+
if (skyLogCount < SKY_LOG_MAX) {
132+
skyLogCount++;
133+
String shaderClass = shader.getClass().getSimpleName();
134+
String shaderName = "?";
135+
try { shaderName = shader.getName(); } catch (Exception ignored) {}
136+
boolean pipelineNull = (pipeline == null);
137+
Renderer r = Renderer.getInstance();
138+
boolean renderPassNull = (r.getBoundRenderPass() == null);
139+
// MV matrix: col0.x, col1.y indicate camera rotation (should NOT be 1,1 for rotated camera)
140+
float mv00 = MV.m00(), mv11 = MV.m11(), mv01 = MV.m01(), mv10 = MV.m10();
141+
org.slf4j.LoggerFactory.getLogger("VBO").info(
142+
"[VBO_DRAW] #{} shader={} class={} pipeline={} renderPass={} idxCnt={} MV[00={} 11={} 01={} 10={}]",
143+
skyLogCount, shaderName, shaderClass,
144+
pipelineNull ? "NULL" : "OK",
145+
renderPassNull ? "NULL" : "OK",
146+
this.indexCount,
147+
String.format("%.3f", mv00), String.format("%.3f", mv11),
148+
String.format("%.3f", mv01), String.format("%.3f", mv10));
149+
}
150+
125151
if (pipeline == null) {
126152
RenderSystem.getModelViewMatrix().set(savedMV);
127153
return;
@@ -138,7 +164,13 @@ public void drawWithShader(Matrix4f MV, Matrix4f P, GraphicsPipeline pipeline) {
138164
RenderSystem.assertOnRenderThread();
139165

140166
Renderer renderer = Renderer.getInstance();
141-
if (renderer.getBoundRenderPass() == null) return;
167+
if (renderer.getBoundRenderPass() == null) {
168+
if (skyLogCount <= SKY_LOG_MAX) {
169+
org.slf4j.LoggerFactory.getLogger("VBO").warn(
170+
"[VBO_DRAW] SKIPPED draw (no render pass) pipeline={}", pipeline);
171+
}
172+
return;
173+
}
142174

143175
VRenderSystem.applyMVP(MV, P);
144176

0 commit comments

Comments
 (0)