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); }
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); }