Skip to content

Commit 1f9c977

Browse files
author
Chris Tchou
authored
Changes for using Embedded IR Tokens (#6348)
* Changes for using Embedded IR Tokens * Missing function * Updating to call ShaderBuilder.DeclareStruct
1 parent 5409cbf commit 1f9c977

File tree

1 file changed

+10
-131
lines changed
  • com.unity.shadergraph/Editor/ShaderFoundry/Utilities

1 file changed

+10
-131
lines changed

com.unity.shadergraph/Editor/ShaderFoundry/Utilities/Extensions.cs

Lines changed: 10 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -73,162 +73,41 @@ internal static void AppendScopeName(this ShaderBuilder builder, Block block)
7373
builder.Append(blockSuffix);
7474
}
7575

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-
8476
internal static void AddVariableDeclarationString(this ShaderBuilder builder, ShaderType type, string name, string defaultValue = null)
8577
{
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);
9179
}
9280

9381
internal static void AddVariableDeclarationStatement(this ShaderBuilder builder, ShaderType type, string name, string defaultValue = null)
9482
{
95-
builder.Indentation();
96-
builder.AddVariableDeclarationString(type, name, defaultValue);
97-
builder.Add(m_SemicolonToken);
98-
builder.NewLine();
83+
builder.DeclareVariable(type, name, defaultValue);
9984
}
10085

10186
internal static void AddVariableDeclarationStatement(this ShaderBuilder builder, Block.Builder blockBuilder, ShaderType type, string name, string defaultValue = null)
10287
{
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);
12289
}
12390

124-
internal static void AppendFullyQualifiedName(this ShaderBuilder builder, ShaderType type)
91+
internal static void AddTypeDeclarationString(this ShaderBuilder builder, ShaderType structType)
12592
{
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);
16395
}
16496

97+
// declare function
16598
internal static void AddDeclarationString(this ShaderBuilder builder, ShaderFunction function)
16699
{
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);
213101
}
214102

215103
internal static void AddCallStatementWithReturn(this ShaderBuilder builder, ShaderFunction function, string returnVariableName, params string[] arguments)
216104
{
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);
222106
}
223107

224108
internal static void AddCallStatementWithNewReturn(this ShaderBuilder builder, ShaderFunction function, string returnVariableName, params string[] arguments)
225109
{
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);
232111
}
233112
}
234113

0 commit comments

Comments
 (0)