예제 #1
0
        public Shader Generate( GenFlags flags )
        {
            string pp = "";

            if (flags.HasFlag(GenFlags.ColorMap))
            {
                pp += "#define HAS_COLOR_MAP\n";
            }

            if (flags.HasFlag(GenFlags.VertexColor))
            {
                pp += "#define HAS_VERTEX_COLOR\n";
            }

            if (flags.HasFlag(GenFlags.PhongSpecularShading))
            {
                pp += "#define HAS_PHONG_SPECULAR_SHADING\n";
            }

            if (flags.HasFlag(GenFlags.Skinning))
            {
                pp += "#define HAS_SKINNING\n";
            }

            if (flags.HasFlag(GenFlags.Lighting))
            {
                pp += "#define HAS_LIGHTING\n";
            }

            return Shader.FromResource("open3mod.Shader.UberVertexShader.glsl", "open3mod.Shader.UberFragmentShader.glsl", pp);
        }
예제 #2
0
        public Shader Generate(GenFlags flags)
        {
            string pp = "";

            if (flags.HasFlag(GenFlags.ColorMap))
            {
                pp += "#define HAS_COLOR_MAP\n";
            }

            if (flags.HasFlag(GenFlags.VertexColor))
            {
                pp += "#define HAS_VERTEX_COLOR\n";
            }

            if (flags.HasFlag(GenFlags.PhongSpecularShading))
            {
                pp += "#define HAS_PHONG_SPECULAR_SHADING\n";
            }

            if (flags.HasFlag(GenFlags.Skinning))
            {
                pp += "#define HAS_SKINNING\n";
            }

            if (flags.HasFlag(GenFlags.Lighting))
            {
                pp += "#define HAS_LIGHTING\n";
            }

            return(new Shader("open3mod.Shader.UberVertexShader.glsl", "open3mod.Shader.UberFragmentShader.glsl", pp));
        }
예제 #3
0
 public Shader GenerateOrGetFromCache(GenFlags flags)
 {
     if (!shaders_.ContainsKey(flags))
     {
         shaders_[flags] = Generate(flags);
     }
     return(shaders_[flags]);
 }
예제 #4
0
파일: ShaderGen.cs 프로젝트: Kolky/open3mod
 public Shader GenerateOrGetFromCache(GenFlags flags)
 {
     if (!shaders_.ContainsKey(flags))
     {
         shaders_[flags] = Generate(flags);
     }
     return shaders_[flags];
 }
예제 #5
0
        public Shader GenerateOrGetFromCache(GenFlags flags, int lightCount)
        {
            int byteShift = 0x20;

            if (!shaders_.ContainsKey(flags + lightCount * byteShift))
            {
                shaders_[flags + lightCount * byteShift] = Generate(flags, lightCount);
            }
            return(shaders_[flags + lightCount * byteShift]);
        }
예제 #6
0
        public Shader Generate(GenFlags flags, int lightCount)
        {
            string pp = "";

            if (lightCount > 0)
            {
                pp += "#define NR_LIGHTS " + lightCount.ToString() + "\n";
            }

            if (flags.HasFlag(GenFlags.TwoSide))
            {
                pp += "#define HAS_TWOSIDE\n";
            }

            if (flags.HasFlag(GenFlags.VertexColor))
            {
                pp += "#define HAS_VERTEX_COLOR\n";
            }

            if (flags.HasFlag(GenFlags.PhongSpecularShading))
            {
                pp += "#define HAS_PHONG_SPECULAR_SHADING\n";
            }

            if (flags.HasFlag(GenFlags.Skinning))
            {
                pp += "#define HAS_SKINNING\n";
            }

            if (flags.HasFlag(GenFlags.Lighting))
            {
                pp += "#define HAS_LIGHTING\n";
            }

            return(Shader.FromResource("open3mod.Shaders.UberVertexShader.glsl", "open3mod.Shaders.UberFragmentShader.glsl", pp));
        }