public static void GenerateGradientStruct(ref string body) { body = string.Empty; IOUtils.AddFunctionHeader(ref body, "struct Gradient"); IOUtils.AddFunctionLine(ref body, "int type;"); IOUtils.AddFunctionLine(ref body, "int colorsLength;"); IOUtils.AddFunctionLine(ref body, "int alphasLength;"); IOUtils.AddFunctionLine(ref body, "float4 colors[8];"); IOUtils.AddFunctionLine(ref body, "float2 alphas[8];"); IOUtils.AddSingleLineFunction(ref body, "};\n"); }
public override string GenerateShaderForOutput(int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalvar) { if (m_outputPorts[0].IsLocalValue) { return(m_outputPorts[0].LocalValue); } switch (m_type) { case NoiseGeneratorType.Simplex2D: { string float3Mod289Func = string.Empty; IOUtils.AddSingleLineFunction(ref float3Mod289Func, Simplex2DFloat3Mod289Func); dataCollector.AddFunction(Simplex2DFloat3Mod289Func, float3Mod289Func); string float2Mod289Func = string.Empty; IOUtils.AddSingleLineFunction(ref float2Mod289Func, Simplex2DFloat2Mod289Func); dataCollector.AddFunction(Simplex2DFloat2Mod289Func, float2Mod289Func); string permuteFunc = string.Empty; IOUtils.AddSingleLineFunction(ref permuteFunc, Simplex2DPermuteFunc); dataCollector.AddFunction(Simplex2DPermuteFunc, permuteFunc); string snoiseFunc = string.Empty; IOUtils.AddFunctionHeader(ref snoiseFunc, SimplexNoise2DHeader); for (int i = 0; i < SimplexNoise2DBody.Length; i++) { IOUtils.AddFunctionLine(ref snoiseFunc, SimplexNoise2DBody[i]); } IOUtils.CloseFunctionBody(ref snoiseFunc); dataCollector.AddFunction(SimplexNoise2DHeader, snoiseFunc); string size = m_inputPorts[0].GeneratePortInstructions(ref dataCollector); RegisterLocalVariable(0, string.Format(SimplexNoise2DFunc, size), ref dataCollector, ("simplePerlin2D" + m_uniqueId)); } break; case NoiseGeneratorType.Simplex3D: { string float3Mod289Func = string.Empty; IOUtils.AddSingleLineFunction(ref float3Mod289Func, Simplex3DFloat3Mod289); dataCollector.AddFunction(Simplex3DFloat3Mod289, float3Mod289Func); string float4Mod289Func = string.Empty; IOUtils.AddSingleLineFunction(ref float4Mod289Func, Simplex3DFloat4Mod289); dataCollector.AddFunction(Simplex3DFloat4Mod289, float4Mod289Func); string permuteFunc = string.Empty; IOUtils.AddSingleLineFunction(ref permuteFunc, Simplex3DFloat4Permute); dataCollector.AddFunction(Simplex3DFloat4Permute, permuteFunc); string taylorInvSqrtFunc = string.Empty; IOUtils.AddSingleLineFunction(ref taylorInvSqrtFunc, TaylorInvSqrtFunc); dataCollector.AddFunction(TaylorInvSqrtFunc, taylorInvSqrtFunc); string snoiseFunc = string.Empty; IOUtils.AddFunctionHeader(ref snoiseFunc, SimplexNoise3DHeader); for (int i = 0; i < SimplexNoise3DBody.Length; i++) { IOUtils.AddFunctionLine(ref snoiseFunc, SimplexNoise3DBody[i]); } IOUtils.CloseFunctionBody(ref snoiseFunc); dataCollector.AddFunction(SimplexNoise3DHeader, snoiseFunc); string size = m_inputPorts[0].GeneratePortInstructions(ref dataCollector); RegisterLocalVariable(0, string.Format(SimplexNoise3DFunc, size), ref dataCollector, ("simplePerlin3D" + m_uniqueId)); } break; } return(m_outputPorts[0].LocalValue); }