VulkanShader_1.21.10-0.0.4-alpha.jar

Download file
    package net.vulkanmod.vulkan.shader.converter;

import java.util.ArrayList;
import java.util.List;

public class UniformBlock {
   int binding;
   String name;
   String alias;
   List<Field> fields = new ArrayList();

   public UniformBlock(String name) {
      this.name = name;
   }

   public void addField(Field field) {
      this.fields.add(field);
   }

   public void setBinding(int binding) {
      this.binding = binding;
   }

   public void setAlias(String alias) {
      this.alias = alias;
   }

   public GLSLParser.Node getNode() {
      StringBuilder sb = new StringBuilder();
      sb.append("layout(binding = %d) uniform %s {\n".formatted(this.binding, this.name));
      int i = 0;

      for(int fieldsSize = this.fields.size(); i < fieldsSize; ++i) {
         Field field = (Field)this.fields.get(i);
         sb.append("\t%s %s;".formatted(field.type, field.name));
         if (i < fieldsSize - 1) {
            sb.append("\n");
         }
      }

      sb.append("\n}");
      if (this.alias != null) {
         sb.append(" %s ".formatted(this.alias));
      }

      sb.append(";\n");
      return new GLSLParser.Node("uniform_block", sb.toString());
   }

   public static class Field {
      final String type;
      final String name;

      public Field(String type, String name) {
         this.type = type;
         this.name = name;
      }
   }
}
    
Download file