コード例 #1
0
 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");
 }
コード例 #2
0
        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);
        }