internal Effect( string name, ShaderWindow window, string vertexShader, string geometryShader, string fragmentShader, IEnumerable <StateConfiguration> renderState, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindings, FramebufferConfiguration framebuffer) : base(name, window) { if (vertexShader == null) { throw new ArgumentNullException("vertexShader", "No vertex shader was specified for material " + name + "."); } if (fragmentShader == null) { throw new ArgumentNullException("fragmentShader", "No fragment shader was specified for material " + name + "."); } vertexSource = vertexShader; geometrySource = geometryShader; fragmentSource = fragmentShader; CreateShaderState(renderState, shaderUniforms, bufferBindings, framebuffer); }
internal ViewportEffect( string name, ShaderWindow window, string fragmentShader, IEnumerable <StateConfiguration> renderState, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindings, FramebufferConfiguration framebuffer, Mesh texturedQuad) : base(name, window, VertexShader, null, fragmentShader, renderState, shaderUniforms, bufferBindings, framebuffer) { if (texturedQuad == null) { throw new ArgumentNullException("texturedQuad"); } mesh = texturedQuad; }
protected void CreateShaderState( IEnumerable <StateConfiguration> renderState, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindings, FramebufferConfiguration framebuffer) { program = CreateShader(); GL.UseProgram(program); shaderState = new ShaderState(this, shaderWindow.ResourceManager, renderState, shaderUniforms, bufferBindings, framebuffer); }
internal ComputeProgram( string name, ShaderWindow window, string computeShader, IEnumerable <StateConfiguration> renderState, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindings, FramebufferConfiguration framebuffer) : base(name, window) { if (computeShader == null) { throw new ArgumentNullException("computeShader", "No compute shader was specified for compute program " + name + "."); } computeSource = computeShader; CreateShaderState(renderState, shaderUniforms, bufferBindings, framebuffer); }
public FramebufferState(ShaderWindow window, FramebufferConfiguration framebufferConfiguration) { if (window == null) { throw new ArgumentNullException("window"); } if (framebufferConfiguration == null) { throw new ArgumentNullException("framebufferConfiguration"); } framebufferWidth = 0; framebufferHeight = 0; framebufferWindow = window; framebufferAttachments = framebufferConfiguration.FramebufferAttachments .Select(configuration => new FramebufferAttachment(window, configuration)) .ToList(); if (framebufferAttachments.Count > 0) { foreach (var attachment in framebufferAttachments) { var width = attachment.Width; var height = attachment.Height; if (framebufferWidth == 0 || width < framebufferWidth) { framebufferWidth = width; } if (framebufferHeight == 0 || height < framebufferHeight) { framebufferHeight = height; } } GL.GenFramebuffers(1, out fbo); GL.BindFramebuffer(FramebufferTarget.Framebuffer, fbo); foreach (var attachment in framebufferAttachments) { attachment.Attach(); } GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); } }
public ShaderState( Shader shaderTarget, ResourceManager resourceManager, IEnumerable <StateConfiguration> renderStateConfiguration, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindingConfiguration, FramebufferConfiguration framebufferConfiguration) { if (shaderTarget == null) { throw new ArgumentNullException("shaderTarget"); } if (resourceManager == null) { throw new ArgumentNullException("resourceManager"); } if (renderStateConfiguration == null) { throw new ArgumentNullException("renderStateConfiguration"); } if (shaderUniforms == null) { throw new ArgumentNullException("shaderUniforms"); } if (bufferBindingConfiguration == null) { throw new ArgumentNullException("bufferBindingConfiguration"); } if (framebufferConfiguration == null) { throw new ArgumentNullException("framebufferConfiguration"); } shader = shaderTarget; renderState = renderStateConfiguration.ToList(); uniformBindings = shaderUniforms.Select(configuration => new UniformBinding(shader, configuration)).ToList(); bufferBindings = bufferBindingConfiguration.Select(configuration => configuration.CreateBufferBinding(shader, resourceManager)).ToList(); framebuffer = new FramebufferState(shader.Window, framebufferConfiguration); }
internal Material( string name, ShaderWindow window, string vertexShader, string geometryShader, string fragmentShader, IEnumerable <StateConfiguration> renderState, IEnumerable <UniformConfiguration> shaderUniforms, IEnumerable <BufferBindingConfiguration> bufferBindings, FramebufferConfiguration framebuffer) : base(name, window, vertexShader, geometryShader, fragmentShader, renderState, shaderUniforms, bufferBindings, framebuffer) { }