class
CrShader::SymbolTable
- CrShader::SymbolTable
- Reference
- Object
Defined in:
crshader/transpiler/symbol_table.crConstant Summary
-
GDSHADER_ALIASES =
{"albedo" => "ALBEDO", "alpha" => "ALPHA", "color" => "COLOR", "normal" => "NORMAL", "roughness" => "ROUGHNESS", "metallic" => "METALLIC", "specular" => "SPECULAR", "emission" => "EMISSION", "time" => "TIME", "vertex" => "VERTEX", "position" => "POSITION", "uv" => "UV", "uv2" => "UV2", "velocity" => "VELOCITY", "transform" => "TRANSFORM", "delta" => "DELTA", "view" => "VIEW", "depth" => "DEPTH", "texture" => "TEXTURE", "eyedir" => "EYEDIR", "screen_uv" => "SCREEN_UV", "fragcoord" => "FRAGCOORD", "point_size" => "POINT_SIZE", "fog" => "FOG", "density" => "DENSITY", "world_position" => "WORLD_POSITION"} -
Common friendly lowercase aliases mapping to Godot uppercase builtins
-
GDSHADER_BUILTINS =
{"VERTEX" => "vec3", "POSITION" => "vec4", "NORMAL" => "vec3", "TANGENT" => "vec3", "BINORMAL" => "vec3", "UV" => "vec2", "UV2" => "vec2", "COLOR" => "vec4", "POINT_SIZE" => "float", "ROUGHNESS" => "float", "METALLIC" => "float", "SPECULAR" => "float", "ALBEDO" => "vec3", "ALPHA" => "float", "ALPHA_SCISSOR_THRESHOLD" => "float", "ALPHA_HASH_SCALE" => "float", "EMISSION" => "vec3", "NORMAL_MAP" => "vec3", "NORMAL_MAP_DEPTH" => "float", "RIM" => "float", "RIM_TINT" => "float", "CLEARCOAT" => "float", "CLEARCOAT_ROUGHNESS" => "float", "CLEARCOAT_GLOSS" => "float", "ANISOTROPY" => "float", "ANISOTROPY_FLOW" => "vec2", "AO" => "float", "AO_LIGHT_AFFECT" => "float", "SSS_STRENGTH" => "float", "TRANSMISSION" => "vec3", "BACKLIGHT" => "vec3", "TIME" => "float", "FRAGCOORD" => "vec4", "FRONT_FACING" => "bool", "POINT_COORD" => "vec2", "MODEL_MATRIX" => "mat4", "VIEW_MATRIX" => "mat4", "PROJECTION_MATRIX" => "mat4", "MODELVIEW_MATRIX" => "mat4", "MODELVIEW_NORMAL_MATRIX" => "mat3", "INV_VIEW_MATRIX" => "mat4", "INV_PROJECTION_MATRIX" => "mat4", "NODE_POSITION_WORLD" => "vec3", "CAMERA_POSITION_WORLD" => "vec3", "CAMERA_DIRECTION_WORLD" => "vec3", "SCREEN_UV" => "vec2", "SCREEN_PIXEL_SIZE" => "vec2", "TEXTURE_PIXEL_SIZE" => "vec2", "VIEW" => "vec3", "EYE_OFFSET" => "vec3", "DEPTH" => "float", "LIGHT" => "vec3", "LIGHT_COLOR" => "vec3", "LIGHT_ENERGY" => "float", "LIGHT_POSITION" => "vec3", "LIGHT_DIRECTION" => "vec3", "ATTENUATION" => "float", "DIFFUSE_LIGHT" => "vec3", "SPECULAR_LIGHT" => "vec3", "SHADOW_MODULATE" => "vec4", "SHADOW_VERTEX" => "vec2", "LIGHT_VERTEX" => "vec2", "AT_LIGHT_PASS" => "bool", "INSTANCE_ID" => "int", "INSTANCE_CUSTOM" => "vec4", "BONE_INDICES" => "uvec4", "BONE_WEIGHTS" => "vec4", "OUTPUT_IS_SRGB" => "bool", "VIEW_INDEX" => "int", "VIEWPORT_SIZE" => "vec2", "TRANSFORM" => "mat4", "VELOCITY" => "vec3", "CUSTOM" => "vec4", "MASS" => "float", "ACTIVE" => "bool", "RESTART" => "bool", "LIFETIME" => "float", "DELTA" => "float", "INDEX" => "uint", "NUMBER" => "uint", "EMISSION_TRANSFORM" => "mat4", "SEED" => "uint", "FLAG_EMIT_POSITION" => "bool", "FLAG_EMIT_ROT_SCALE" => "bool", "FLAG_EMIT_VELOCITY" => "bool", "FLAG_EMIT_COLOR" => "bool", "FLAG_EMIT_CUSTOM" => "bool", "USERDATA1" => "vec4", "USERDATA2" => "vec4", "USERDATA3" => "vec4", "USERDATA4" => "vec4", "USERDATA5" => "vec4", "USERDATA6" => "vec4", "COLLISION_NORMAL" => "vec3", "COLLISION_DEPTH" => "float", "ATTRACTOR_FORCE" => "vec3", "TEXTURE" => "sampler2D", "CANVAS_MATRIX" => "mat4", "SCREEN_MATRIX" => "mat4", "SPECULAR_SHININESS" => "float", "SPECULAR_SHININESS_TEXTURE" => "sampler2D", "NORMAL_TEXTURE" => "sampler2D", "MAIN_CAM_INV_VIEW_MATRIX" => "mat4", "FOG" => "vec4", "RADIANCE" => "vec4", "IRRADIANCE" => "vec4", "SSS_TRANSMITTANCE_COLOR" => "vec4", "SSS_TRANSMITTANCE_DEPTH" => "float", "SSS_TRANSMITTANCE_BOOST" => "float", "CUSTOM0" => "vec4", "CUSTOM1" => "vec4", "CUSTOM2" => "vec4", "CUSTOM3" => "vec4", "EYEDIR" => "vec3", "SKY_COORDS" => "vec2", "HALF_RES_COLOR" => "vec4", "QUARTER_RES_COLOR" => "vec4", "LIGHT0_DIRECTION" => "vec3", "LIGHT0_COLOR" => "vec3", "LIGHT0_ENERGY" => "float", "LIGHT0_ENABLED" => "bool", "LIGHT1_DIRECTION" => "vec3", "LIGHT1_COLOR" => "vec3", "LIGHT1_ENERGY" => "float", "LIGHT1_ENABLED" => "bool", "LIGHT2_DIRECTION" => "vec3", "LIGHT2_COLOR" => "vec3", "LIGHT2_ENERGY" => "float", "LIGHT2_ENABLED" => "bool", "LIGHT3_DIRECTION" => "vec3", "LIGHT3_COLOR" => "vec3", "LIGHT3_ENERGY" => "float", "LIGHT3_ENABLED" => "bool", "WORLD_POSITION" => "vec3", "OBJECT_POSITION" => "vec3", "FOG_COLOR" => "vec4", "LOOKUP_COLOR" => "vec4", "DENSITY" => "float", "SDF" => "float", "SDF_NORMAL" => "vec3"} -
GDShader built-in variables that are already declared by Godot
-
GLSL_BUILTINS =
{"gl_NumWorkGroups" => "uvec3", "gl_WorkGroupSize" => "uvec3", "gl_WorkGroupID" => "uvec3", "gl_LocalInvocationID" => "uvec3", "gl_GlobalInvocationID" => "uvec3", "gl_LocalInvocationIndex" => "uint"} -
GLSL Compute built-ins
Constructors
- .new(target : ShaderTarget = ShaderTarget::GDShader, shader_type : ShaderType = ShaderType::Spatial)
Instance Method Summary
- #current_scope_vars : Hash(String, String)
- #current_scope_vars=(current_scope_vars : Hash(String, String))
- #declared_vars_in_scope : Set(String)
- #declared_vars_in_scope=(declared_vars_in_scope : Set(String))
- #enter_function
- #enter_scope
- #exit_function
- #exit_scope
- #function_return_types : Hash(String, String)
- #function_return_types=(function_return_types : Hash(String, String))
- #global_symbols : Hash(String, String)
- #global_symbols=(global_symbols : Hash(String, String))
-
#infer_type(node : Crystal::ASTNode) : String
Heuristic type inferencer from AST value
- #is_array?(node : Crystal::ASTNode) : Bool
- #is_builtin?(name : String) : Bool
- #lookup_type(name : String) : String | Nil
- #mark_variable_declared(name : String, type_name : String)
- #referenced_functions : Set(String)
- #referenced_functions=(referenced_functions : Set(String))
- #register_function(name : String, return_type : String)
- #register_global(name : String, type_name : String)
- #register_param(name : String, type_name : String)
- #resolve_builtin_name(name : String) : String
- #scope_stack : Array(Set(String))
- #scope_stack=(scope_stack : Array(Set(String)))
- #shader_type : ShaderType
- #shader_type=(shader_type : ShaderType)
- #target : ShaderTarget
- #target=(target : ShaderTarget)
- #variable_declared?(name : String) : Bool
Constructor Detail
def self.new(target : ShaderTarget = ShaderTarget::GDShader, shader_type : ShaderType = ShaderType::Spatial)
#