Skip to content

Commit 5acb771

Browse files
committed
Improve glsl parsing
- add legacy uniforms
1 parent 8649ac2 commit 5acb771

6 files changed

Lines changed: 182 additions & 64 deletions

File tree

src/main/java/net/vulkanmod/render/engine/EGlProgram.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public void setupUniforms(Pipeline pipeline, List<RenderPipeline.UniformDescript
5454

5555
for (String samplerName : samplers) {
5656
var imageDescriptor = pipeline.getImageDescriptor(samplerName);
57+
58+
if (imageDescriptor == null) {
59+
continue;
60+
}
61+
5762
int binding = imageDescriptor.getBinding();
5863
int imageIdx = imageDescriptor.imageIdx;
5964
this.uniformsByName.put(samplerName, new Uniform.Sampler(binding, imageIdx));

src/main/java/net/vulkanmod/render/engine/VkGpuDevice.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import net.vulkanmod.vulkan.shader.SPIRVUtils;
2828
import net.vulkanmod.vulkan.shader.converter.GLSLParser;
2929
import net.vulkanmod.vulkan.shader.converter.Lexer;
30+
import net.vulkanmod.vulkan.shader.descriptor.ImageDescriptor;
3031
import net.vulkanmod.vulkan.shader.descriptor.UBO;
3132
import net.vulkanmod.vulkan.texture.VulkanImage;
3233
import org.apache.commons.lang3.StringUtils;
@@ -365,11 +366,12 @@ private void compilePipeline(RenderPipeline renderPipeline, BiFunction<ResourceL
365366
}
366367

367368
UBO[] ubos = parser.createUBOs();
369+
List<ImageDescriptor> samplers = parser.getSamplerList();
368370

369371
String vshProcessed = parser.getOutput(GLSLParser.Stage.VERTEX);
370372
String fshProcessed = parser.getOutput(GLSLParser.Stage.FRAGMENT);
371373

372-
builder.setUniforms(List.of(ubos), parser.getSamplerList());
374+
builder.setUniforms(List.of(ubos), samplers);
373375

374376
builder.setShaderSrc(SPIRVUtils.ShaderKind.VERTEX_SHADER, vshProcessed);
375377
builder.setShaderSrc(SPIRVUtils.ShaderKind.FRAGMENT_SHADER, fshProcessed);

src/main/java/net/vulkanmod/vulkan/shader/converter/Attribute.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.vulkanmod.vulkan.shader.converter;
22

3-
public class Attribute {
3+
public class Attribute implements GLSLParser.Node {
44

55
String ioType;
66
String type;
@@ -22,8 +22,8 @@ public void setLocation(int location) {
2222
this.location = location;
2323
}
2424

25-
public GLSLParser.Node getNode() {
26-
return new GLSLParser.Node("attribute", "layout(location = %d) %s %s %s;\n".formatted(location, ioType, type, id));
25+
@Override
26+
public String getStringValue() {
27+
return "layout(location = %d) %s %s %s;\n".formatted(location, ioType, type, id);
2728
}
28-
2929
}

0 commit comments

Comments
 (0)