CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
MaterialGraphNode.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2023 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
12
13namespace CeresEngine {
14
15 class MaterialGraph;
16 class MaterialGraphSocket;
17
20
21 public:
22 using super::super;
23
24 public:
25 };
26
41
42 // ---------------------------------------------------------------------------------------------
43
54
55 extern template class MaterialGraphLiteralNode<float>;
56 extern template class MaterialGraphLiteralNode<Vector2f>;
57 extern template class MaterialGraphLiteralNode<Vector3f>;
58 extern template class MaterialGraphLiteralNode<Vector4f>;
59
64
65 // ---------------------------------------------------------------------------------------------
66
67#define CE_MATERIAL_GRAPH_NUMERIC_TYPES(F) \
68 F(Float) \
69 F(Vector2) \
70 F(Vector3) \
71 F(Vector4)
72
74 Add,
77 Divide,
78 Max,
79 Min,
80 };
81
82 template<typename T> class MaterialGraphMathNode : public MaterialGraphOutputNode {
84
85 public:
86 using super::super;
87 };
88
89#define CE_MATERIAL_GRAPH_MATH_NODE_T(T) \
90 extern template class MaterialGraphMathNode<T>; \
91 using MaterialGraph##T##MathNode = MaterialGraphMathNode<T>;
93#undef CE_MATERIAL_GRAPH_MATH_NODE_T
94
107
108#define CE_MATERIAL_GRAPH_MATH_NODE_T(T) \
109 extern template class MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Add>; \
110 using MaterialGraph##T##AddNode = MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Add>; \
111 \
112 extern template class MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Subtract>; \
113 using MaterialGraph##T##SubtractNode = MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Subtract>; \
114 \
115 extern template class MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Multiply>; \
116 using MaterialGraph##T##MultiplyNode = MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Multiply>; \
117 \
118 extern template class MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Divide>; \
119 using MaterialGraph##T##DivideNode = MaterialGraphBinaryMathNode<T, MaterialGraphMathOperation::Divide>;
121#undef CE_MATERIAL_GRAPH_MATH_NODE_T
122
123} // namespace CeresEngine
#define CE_MATERIAL_GRAPH_NUMERIC_TYPES(F)
Definition MaterialGraphNode.hpp:67
#define CE_MATERIAL_GRAPH_MATH_NODE_T(T)
Definition MaterialGraphNode.hpp:89
Definition GraphNode.hpp:21
Definition MaterialGraphNode.hpp:95
const MaterialGraphMathOperation operation
Definition MaterialGraphNode.hpp:99
MaterialGraphSocket & lhs
Definition MaterialGraphNode.hpp:100
MaterialGraphSocket & rhs
Definition MaterialGraphNode.hpp:101
MaterialGraphBinaryMathNode(MaterialGraph &graph, const UUID &uuid)
MaterialGraphSocket & output
Definition MaterialGraphNode.hpp:102
A graph that generates a rendering material shader.
Definition MaterialGraph.hpp:17
Definition MaterialGraphNode.hpp:44
MaterialGraphSocket & output
Definition MaterialGraphNode.hpp:49
T value
Definition MaterialGraphNode.hpp:48
MaterialGraphLiteralNode(MaterialGraph &graph, const UUID &uuid)
Definition MaterialGraphNode.hpp:82
Definition MaterialGraphNode.hpp:18
A material graph node that represents the material output.
Definition MaterialGraphNode.hpp:28
MaterialGraphOutputNode(MaterialGraph &graph, const UUID &uuid)
MaterialGraphSocket & roughness
Definition MaterialGraphNode.hpp:35
MaterialGraphSocket & baseColor
Definition MaterialGraphNode.hpp:32
MaterialGraphSocket & normal
Definition MaterialGraphNode.hpp:33
MaterialGraphSocket & emissive
Definition MaterialGraphNode.hpp:36
MaterialGraphSocket & metallic
Definition MaterialGraphNode.hpp:34
Definition MaterialGraphSocket.hpp:24
Definition Application.hpp:19
MaterialGraphMathOperation
Definition MaterialGraphNode.hpp:73
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Represents a universally unique identifier (UUID).
Definition UUID.hpp:27