Exemple #1
0
        public int LoadShader(ParsedShader shader, string name = null)
        {
            var vertexSource   = _shaderWrapCodeSpriteVert;
            var fragmentSource = _shaderWrapCodeSpriteFrag;

            var(header, vertBody, fragBody) = _getShaderCode(shader);

            vertexSource   = vertexSource.Replace("[SHADER_HEADER_CODE]", header);
            vertexSource   = vertexSource.Replace("[SHADER_CODE]", vertBody);
            fragmentSource = fragmentSource.Replace("[SHADER_HEADER_CODE]", header);
            fragmentSource = fragmentSource.Replace("[SHADER_CODE]", fragBody);

            var program = _compileProgram(vertexSource, fragmentSource, name);

            program.BindBlock("projectionViewMatrices", ProjViewBindingIndex);
            program.BindBlock("uniformConstants", UniformConstantsBindingIndex);

            var loaded = new LoadedShader
            {
                Program     = program,
                HasLighting = (shader.RenderMode & ShaderRenderMode.Unshaded) == 0
            };
            var ret = _loadedShaders.Count;

            _loadedShaders.Add(loaded);
            return(ret);
        }
        public ClydeHandle LoadShader(ParsedShader shader, string name = null)
        {
            var vertexSource   = _shaderWrapCodeSpriteVert;
            var fragmentSource = _shaderWrapCodeSpriteFrag;

            var(header, vertBody, fragBody) = _getShaderCode(shader);

            vertexSource   = vertexSource.Replace("[SHADER_HEADER_CODE]", header);
            vertexSource   = vertexSource.Replace("[SHADER_CODE]", vertBody);
            fragmentSource = fragmentSource.Replace("[SHADER_HEADER_CODE]", header);
            fragmentSource = fragmentSource.Replace("[SHADER_CODE]", fragBody);

            var program = _compileProgram(vertexSource, fragmentSource, name);

            program.BindBlock("projectionViewMatrices", ProjViewBindingIndex);
            program.BindBlock("uniformConstants", UniformConstantsBindingIndex);

            var loaded = new LoadedShader
            {
                Program     = program,
                HasLighting = shader.LightMode != ShaderLightMode.Unshaded,
                BlendMode   = shader.BlendMode
            };
            var handle = AllocRid();

            _loadedShaders.Add(handle, loaded);
            return(handle);
        }
        public ClydeHandle LoadShader(ParsedShader shader, string name = null)
        {
            var(vertBody, fragBody) = GetShaderCode(shader);

            var program = _compileProgram(vertBody, fragBody, name);

            program.BindBlock(UniProjViewMatrices, ProjViewBindingIndex);
            program.BindBlock(UniUniformConstants, UniformConstantsBindingIndex);

            var loaded = new LoadedShader
            {
                Program     = program,
                HasLighting = shader.LightMode != ShaderLightMode.Unshaded,
                BlendMode   = shader.BlendMode,
                Name        = name
            };
            var handle = AllocRid();

            _loadedShaders.Add(handle, loaded);
            return(handle);
        }
Exemple #4
0
        public ClydeHandle LoadShader(ParsedShader shader, string?name = null)
        {
            var(vertBody, fragBody) = GetShaderCode(shader);

            var program = _compileProgram(vertBody, fragBody, BaseShaderAttribLocations, name);

            if (_hasGLUniformBuffers)
            {
                program.BindBlock(UniProjViewMatrices, BindingIndexProjView);
                program.BindBlock(UniUniformConstants, BindingIndexUniformConstants);
            }

            var loaded = new LoadedShader
            {
                Program     = program,
                HasLighting = shader.LightMode != ShaderLightMode.Unshaded,
                BlendMode   = shader.BlendMode,
                Name        = name
            };
            var handle = AllocRid();

            _loadedShaders.Add(handle, loaded);
            return(handle);
        }