private ShaderDataTypeFull _parseShaderType() { var precision = ShaderPrecisionQualifier.None; while (true) { var typeToken = _takeToken(); if (!(typeToken is TokenWord wordType)) { throw new ShaderParseException("Expected type or precision", typeToken?.Position); } if (_shaderTypePrecisionMap.TryGetValue(wordType.Word, out var tmprc)) { precision = tmprc; continue; } if (_shaderTypeMap.TryGetValue(wordType.Word, out var ret)) { var result = new ShaderDataTypeFull(ret, precision); if (!result.TypePrecisionConsistent()) { throw new ShaderParseException($"Type {ret} cannot accept precision {precision}", wordType.Position); } return(result); } throw new ShaderParseException("Expected type or precision", wordType.Position); } }
public ShaderFunctionDefinition(string name, ShaderDataTypeFull returnType, IReadOnlyList <ShaderFunctionParameter> parameters, string body) { Name = name; ReturnType = returnType; Parameters = parameters; Body = body; }
public ShaderVaryingDefinition(string name, ShaderDataTypeFull type) { Name = name; Type = type; }
public ShaderFunctionParameter(string name, ShaderDataTypeFull type, ShaderParameterQualifiers qualifiers) { Name = name; Type = type; Qualifiers = qualifiers; }
public ShaderConstantDefinition(string name, ShaderDataTypeFull type, string value) { Name = name; Type = type; Value = value; }
public ShaderUniformDefinition(string name, ShaderDataTypeFull type, string?defaultValue) { Name = name; Type = type; DefaultValue = defaultValue; }