コード例 #1
0
        /// <summary>
        /// Shader building
        /// </summary>
        public shader_gl build(shader_t shader, shader_p surface)
        {
            if (shader == null)
            {
                return(null);
            }

            shader_gl glShader = new shader_gl();

            glShader.cull        = translateCull(shader.cull);
            glShader.sort        = shader.sort;
            glShader.sky         = shader.sky;
            glShader.blend       = shader.blend;
            glShader.name        = shader.name;
            glShader.sky_env_map = shader.sky_env_map;
            glShader.stages      = new List <stage_gl>();

            for (int j = 0; j < shader.stages.Count; ++j)
            {
                stage_t  t = shader.stages[j];
                stage_gl s = new stage_gl();

                //s.animFrame = t.animFrame;
                s.animFreq = t.animFreq;
                s.animMaps = t.animMaps;
                //s.animTexture = t.animTexture;
                s.texture   = -1;
                s.blendSrc  = translateBlendSrc(t.blendSrc);
                s.blendDest = translateBlendDest(t.blendDest);
                s.depthFunc = translateDepthFunc(t.depthFunc);
                s.map       = t.map;
                s.tcMods    = t.tcMods;

                s.depthWrite         = t.depthWrite;
                s.isLightmap         = t.isLightmap;
                s.shaderSrc          = t.shaderSrc;
                s.clamp              = t.clamp;
                s.tcGen              = t.tcGen;
                s.rgbGen             = t.rgbGen;
                s.rgbWaveform        = t.rgbWaveform;
                s.alphaGen           = t.alphaGen;
                s.alphaFunc          = t.alphaFunc;
                s.alphaWaveform      = t.alphaWaveform;
                s.hasBlendFunc       = t.hasBlendFunc;
                s.depthWriteOverride = t.depthWriteOverride;
                s.blend              = t.blend;
                s.opaque             = t.opaque;

                glShader.stages.Add(s);
            }

            return(glShader);
        }
コード例 #2
0
        public static void buildShaders(List <shader_t> shaders)
        {
            q3bsp.shaders = new Dictionary <string, shader_gl>();

            for (var i = 0; i < shaders.Count; ++i)
            {
                shader_t shader = shaders[i];

                if (shader == null)
                {
                    continue;
                }

                shader_gl glShader = q3bsp.glshading.build(shader, null);

                String shader_name = shader.name;

                q3bsp.shaders[shader_name] = glShader;
            }
        }