diff options
| author | Rémi Verschelde <remi@verschelde.fr> | 2021-12-22 13:29:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-22 13:29:03 +0100 |
| commit | 0f6a6ca5be1d674a6dfce03684bbf469d77e5e63 (patch) | |
| tree | 45dc27a0b90ad8c2fef03e456bfdb0c2f7981041 /servers/rendering/shader_language.h | |
| parent | 656f81eec729b48138354a9fa2d72076d448182a (diff) | |
| parent | e8a457ba898ffde5dbc02d573103f00d626f3a5b (diff) | |
Merge pull request #56131 from Chaosus/shader_refactor_render_modes
Diffstat (limited to 'servers/rendering/shader_language.h')
| -rw-r--r-- | servers/rendering/shader_language.h | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h index 8502a250b6..0ed3d9fabf 100644 --- a/servers/rendering/shader_language.h +++ b/servers/rendering/shader_language.h @@ -819,6 +819,57 @@ public: DataType return_type = TYPE_VOID; }; + struct ModeInfo { + StringName name; + Vector<StringName> options; + + ModeInfo() {} + + ModeInfo(const StringName &p_name) : + name(p_name) { + } + + ModeInfo(const StringName &p_name, const StringName &p_arg1, const StringName &p_arg2) : + name(p_name) { + options.push_back(p_arg1); + options.push_back(p_arg2); + } + + ModeInfo(const StringName &p_name, const StringName &p_arg1, const StringName &p_arg2, const StringName &p_arg3) : + name(p_name) { + options.push_back(p_arg1); + options.push_back(p_arg2); + options.push_back(p_arg3); + } + + ModeInfo(const StringName &p_name, const StringName &p_arg1, const StringName &p_arg2, const StringName &p_arg3, const StringName &p_arg4) : + name(p_name) { + options.push_back(p_arg1); + options.push_back(p_arg2); + options.push_back(p_arg3); + options.push_back(p_arg4); + } + + ModeInfo(const StringName &p_name, const StringName &p_arg1, const StringName &p_arg2, const StringName &p_arg3, const StringName &p_arg4, const StringName &p_arg5) : + name(p_name) { + options.push_back(p_arg1); + options.push_back(p_arg2); + options.push_back(p_arg3); + options.push_back(p_arg4); + options.push_back(p_arg5); + } + + ModeInfo(const StringName &p_name, const StringName &p_arg1, const StringName &p_arg2, const StringName &p_arg3, const StringName &p_arg4, const StringName &p_arg5, const StringName &p_arg6) : + name(p_name) { + options.push_back(p_arg1); + options.push_back(p_arg2); + options.push_back(p_arg3); + options.push_back(p_arg4); + options.push_back(p_arg5); + options.push_back(p_arg6); + } + }; + struct FunctionInfo { Map<StringName, BuiltInInfo> built_ins; Map<StringName, StageFunctionInfo> stage_functions; @@ -1013,7 +1064,7 @@ private: String _get_shader_type_list(const Set<String> &p_shader_types) const; String _get_qualifier_str(ArgumentQualifier p_qualifier) const; - Error _parse_shader(const Map<StringName, FunctionInfo> &p_functions, const Vector<StringName> &p_render_modes, const Set<String> &p_shader_types); + Error _parse_shader(const Map<StringName, FunctionInfo> &p_functions, const Vector<ModeInfo> &p_render_modes, const Set<String> &p_shader_types); Error _find_last_flow_op_in_block(BlockNode *p_block, FlowOperation p_op); Error _find_last_flow_op_in_op(ControlFlowNode *p_flow, FlowOperation p_op); @@ -1037,7 +1088,7 @@ public: struct ShaderCompileInfo { Map<StringName, FunctionInfo> functions; - Vector<StringName> render_modes; + Vector<ModeInfo> render_modes; VaryingFunctionNames varying_function_names = VaryingFunctionNames(); Set<String> shader_types; GlobalVariableGetTypeFunc global_variable_type_func = nullptr; |