@@ -73,162 +73,41 @@ internal static void AppendScopeName(this ShaderBuilder builder, Block block)
73
73
builder . Append ( blockSuffix ) ;
74
74
}
75
75
76
- static void AppendTypeName ( this ShaderBuilder builder , ShaderType type , Block currentScope )
77
- {
78
- if ( currentScope == type . ParentBlock )
79
- builder . Add ( type . Name ) ;
80
- else
81
- builder . AppendFullyQualifiedName ( type ) ;
82
- }
83
-
84
76
internal static void AddVariableDeclarationString ( this ShaderBuilder builder , ShaderType type , string name , string defaultValue = null )
85
77
{
86
- builder . AppendFullyQualifiedName ( type ) ;
87
- builder . Append ( m_SpaceToken ) ;
88
- builder . Append ( name ) ;
89
- if ( ! string . IsNullOrEmpty ( defaultValue ) )
90
- builder . Add ( m_SpaceToken , m_EqualToken , m_SpaceToken , defaultValue ) ;
78
+ builder . DeclareVariable ( type , name , defaultValue ) ;
91
79
}
92
80
93
81
internal static void AddVariableDeclarationStatement ( this ShaderBuilder builder , ShaderType type , string name , string defaultValue = null )
94
82
{
95
- builder . Indentation ( ) ;
96
- builder . AddVariableDeclarationString ( type , name , defaultValue ) ;
97
- builder . Add ( m_SemicolonToken ) ;
98
- builder . NewLine ( ) ;
83
+ builder . DeclareVariable ( type , name , defaultValue ) ;
99
84
}
100
85
101
86
internal static void AddVariableDeclarationStatement ( this ShaderBuilder builder , Block . Builder blockBuilder , ShaderType type , string name , string defaultValue = null )
102
87
{
103
- builder . Indentation ( ) ;
104
-
105
- // There is an unfortunate ordering issue where the type's parent block is still being
106
- // built that prevents this from using the other helper functions.
107
- var parentBlock = type . ParentBlock ;
108
- if ( parentBlock . IsValid && parentBlock . index != blockBuilder . blockId )
109
- {
110
- builder . AppendScopeName ( parentBlock ) ;
111
- builder . Append ( m_ScopeToken ) ;
112
- }
113
- builder . Append ( type . Name ) ;
114
-
115
- builder . Append ( m_SpaceToken ) ;
116
- builder . Append ( name ) ;
117
- if ( ! string . IsNullOrEmpty ( defaultValue ) )
118
- builder . Add ( m_SpaceToken , m_EqualToken , m_SpaceToken , defaultValue ) ;
119
-
120
- builder . Add ( m_SemicolonToken ) ;
121
- builder . NewLine ( ) ;
88
+ builder . DeclareVariable ( type , name , defaultValue ) ;
122
89
}
123
90
124
- internal static void AppendFullyQualifiedName ( this ShaderBuilder builder , ShaderType type )
91
+ internal static void AddTypeDeclarationString ( this ShaderBuilder builder , ShaderType structType )
125
92
{
126
- var parentBlock = type . ParentBlock ;
127
- if ( parentBlock . IsValid )
128
- {
129
- builder . AppendScopeName ( parentBlock ) ;
130
- builder . Append ( m_ScopeToken ) ;
131
- builder . Append ( type . Name ) ;
132
- return ;
133
- }
134
- builder . Append ( type . Name ) ;
135
- }
136
-
137
- internal static void AddTypeDeclarationString ( this ShaderBuilder builder , ShaderType type )
138
- {
139
- builder . AddLine ( m_StructKeyword , m_SpaceToken , type . Name ) ;
140
-
141
- using ( builder . BlockSemicolonScope ( ) )
142
- {
143
- foreach ( var field in type . StructFields )
144
- {
145
- builder . Indentation ( ) ;
146
- builder . AddVariableDeclarationString ( field . Type , field . Name ) ;
147
- builder . Add ( m_SemicolonToken ) ;
148
- builder . NewLine ( ) ;
149
- }
150
- }
151
- }
152
-
153
- internal static void AppendFullyQualifiedName ( this ShaderBuilder builder , ShaderFunction function )
154
- {
155
- var parentBlock = function . ParentBlock ;
156
- if ( parentBlock . IsValid )
157
- {
158
- builder . AppendScopeName ( parentBlock ) ;
159
- builder . Add ( m_ScopeToken , function . Name ) ;
160
- return ;
161
- }
162
- builder . Add ( function . Name ) ;
93
+ if ( structType . IsStruct )
94
+ builder . DeclareStruct ( structType ) ;
163
95
}
164
96
97
+ // declare function
165
98
internal static void AddDeclarationString ( this ShaderBuilder builder , ShaderFunction function )
166
99
{
167
- var parentBlock = function . ParentBlock ;
168
- builder . Indentation ( ) ;
169
- builder . AppendTypeName ( function . ReturnType , parentBlock ) ;
170
- builder . Add ( m_SpaceToken , function . Name , m_BeginParenthesisToken ) ;
171
-
172
- var paramIndex = 0 ;
173
- foreach ( var param in function . Parameters )
174
- {
175
- if ( paramIndex != 0 )
176
- builder . Add ( ", " ) ;
177
- if ( param . IsOutput )
178
- {
179
- if ( param . IsInput )
180
- builder . Add ( inoutKeyword , m_SpaceToken ) ;
181
- else
182
- builder . Add ( outKeyword , m_SpaceToken ) ;
183
- }
184
-
185
- builder . AppendTypeName ( param . Type , parentBlock ) ;
186
- builder . Add ( m_SpaceToken , param . Name ) ;
187
- ++ paramIndex ;
188
- }
189
- builder . Add ( m_EndParenthesisToken ) ;
190
- builder . NewLine ( ) ;
191
-
192
- builder . AddLine ( m_BeginCurlyBraceToken ) ;
193
- builder . Indent ( ) ;
194
-
195
- builder . Add ( function . Body ) ;
196
-
197
- builder . Deindent ( ) ;
198
- builder . AddLine ( m_EndCurlyBraceToken ) ;
199
- }
200
-
201
- internal static void AddCallString ( this ShaderBuilder builder , ShaderFunction function , params string [ ] arguments )
202
- {
203
- // Can't yet use builder.Call due to namespacing
204
- builder . AppendFullyQualifiedName ( function ) ;
205
- builder . Add ( m_BeginParenthesisToken ) ;
206
- for ( var i = 0 ; i < arguments . Length ; ++ i )
207
- {
208
- builder . Add ( arguments [ i ] ) ;
209
- if ( i != arguments . Length - 1 )
210
- builder . Add ( m_CommaToken , m_SpaceToken ) ;
211
- }
212
- builder . Add ( m_EndParenthesisToken ) ;
100
+ builder . DeclareFunction ( function ) ;
213
101
}
214
102
215
103
internal static void AddCallStatementWithReturn ( this ShaderBuilder builder , ShaderFunction function , string returnVariableName , params string [ ] arguments )
216
104
{
217
- builder . Indentation ( ) ;
218
- builder . Add ( returnVariableName ) ;
219
- builder . Add ( m_SpaceToken , m_EqualToken , m_SpaceToken ) ;
220
- builder . AddCallString ( function , arguments ) ;
221
- builder . Add ( m_SemicolonToken ) ;
105
+ builder . CallFunctionWithReturn ( function , returnVariableName , arguments ) ;
222
106
}
223
107
224
108
internal static void AddCallStatementWithNewReturn ( this ShaderBuilder builder , ShaderFunction function , string returnVariableName , params string [ ] arguments )
225
109
{
226
- builder . Indentation ( ) ;
227
- builder . AddVariableDeclarationString ( function . ReturnType , returnVariableName ) ;
228
- builder . Add ( m_SpaceToken , m_EqualToken , m_SpaceToken ) ;
229
- builder . AddCallString ( function , arguments ) ;
230
- builder . Add ( m_SemicolonToken ) ;
231
- builder . NewLine ( ) ;
110
+ builder . CallFunctionWithDeclaredReturn ( function , function . ReturnType , returnVariableName , arguments ) ;
232
111
}
233
112
}
234
113
0 commit comments