public ModelBatch(int bufferSize, int indexBufferSize) { const int ShadowMapSize = 2048; GLUtilities.AllocateBuffers(bufferSize, indexBufferSize, out bufferId, out indexBufferId, GL_STATIC_DRAW); modelShader = new Shader(); modelShader.Attach(ShaderTypes.Vertex, "ModelShadow.vert"); modelShader.Attach(ShaderTypes.Fragment, "ModelShadow.frag"); modelShader.AddAttribute <float>(3, GL_FLOAT); modelShader.AddAttribute <float>(2, GL_FLOAT); modelShader.AddAttribute <float>(3, GL_FLOAT); modelShader.CreateProgram(); modelShader.Bind(bufferId, indexBufferId); modelShader.Use(); modelShader.SetUniform("shadowSampler", 0); modelShader.SetUniform("textureSampler", 1); shadowMapShader = new Shader(); shadowMapShader.Attach(ShaderTypes.Vertex, "ShadowMap.vert"); shadowMapShader.Attach(ShaderTypes.Fragment, "ShadowMap.frag"); shadowMapShader.AddAttribute <float>(3, GL_FLOAT, false, false, sizeof(float) * 5); shadowMapShader.CreateProgram(); shadowMapShader.Bind(bufferId, indexBufferId); shadowMapTarget = new RenderTarget(ShadowMapSize, ShadowMapSize, RenderTargetFlags.Depth); defaultTexture = ContentCache.GetTexture("Grey.png"); handles = new List <ModelHandle>(); // These default values are arbitrary, just to make sure something shows up. LightDirection = vec3.UnitX; LightColor = Color.White; AmbientIntensity = 0.1f; }
public SpriteBatch() { var accessor = Properties.Access(); var bufferCapacity = accessor.GetInt("sprite.batch.buffer.capacity"); var indexCapacity = accessor.GetInt("sprite.batch.index.capacity"); buffer = new PrimitiveBuffer(bufferCapacity, indexCapacity); GLUtilities.AllocateBuffers(bufferCapacity, indexCapacity, out bufferId, out indexId, GL_DYNAMIC_DRAW); // These two shaders (owned by the sprite batch) can be completed here (in terms of binding a buffer). // External shaders are bound when first applied. spriteShader = new Shader(bufferId, indexId); spriteShader.Attach(ShaderTypes.Vertex, "Sprite.vert"); spriteShader.Attach(ShaderTypes.Fragment, "Sprite.frag"); spriteShader.AddAttribute <float>(2, GL_FLOAT); spriteShader.AddAttribute <float>(2, GL_FLOAT); spriteShader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, ShaderAttributeFlags.IsNormalized); spriteShader.Initialize(); primitiveShader = new Shader(bufferId, indexId); primitiveShader.Attach(ShaderTypes.Vertex, "Primitives2D.vert"); primitiveShader.Attach(ShaderTypes.Fragment, "Primitives.frag"); primitiveShader.AddAttribute <float>(2, GL_FLOAT); primitiveShader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, ShaderAttributeFlags.IsNormalized); primitiveShader.Initialize(); }
public SpriteBatch() { const int BufferCapacity = 30000; const int IndexCapacity = 3000; buffer = new PrimitiveBuffer(BufferCapacity, IndexCapacity); GLUtilities.AllocateBuffers(BufferCapacity, IndexCapacity, out bufferId, out indexBufferId, GL_DYNAMIC_DRAW); // These two shaders (owned by the sprite batch) can be completed here (in terms of binding a buffer). // External shaders are bound when first applied. spriteShader = new Shader(); spriteShader.Attach(ShaderTypes.Vertex, "Sprite.vert"); spriteShader.Attach(ShaderTypes.Fragment, "Sprite.frag"); spriteShader.AddAttribute <float>(2, GL_FLOAT); spriteShader.AddAttribute <float>(2, GL_FLOAT); spriteShader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, false, true); spriteShader.CreateProgram(); spriteShader.Bind(bufferId, indexBufferId); primitiveShader = new Shader(); primitiveShader.Attach(ShaderTypes.Vertex, "Primitives2D.vert"); primitiveShader.Attach(ShaderTypes.Fragment, "Primitives.frag"); primitiveShader.CreateProgram(); primitiveShader.AddAttribute <float>(2, GL_FLOAT); primitiveShader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, false, true); primitiveShader.Bind(bufferId, indexBufferId); MessageSystem.Subscribe(this, CoreMessageTypes.ResizeWindow, (messageType, data, dt) => { OnResize(); }); }
protected MeshRenderer(GlobalLight light, string property) : base(light) { var accessor = Properties.Access(); var bufferCapacity = accessor.GetInt(property + ".buffer.capacity"); var indexCapacity = accessor.GetInt(property + ".index.capacity"); GLUtilities.AllocateBuffers(bufferCapacity, indexCapacity, out bufferId, out indexId, GL_STATIC_DRAW); }
public PrimitiveRenderer3D(Camera3D camera, int bufferSize, int indexSize) { this.camera = camera; buffer = new PrimitiveBuffer(bufferSize, indexSize); GLUtilities.AllocateBuffers(bufferSize, indexSize, out bufferId, out indexId, GL_DYNAMIC_DRAW); shader = new Shader(bufferId, indexId); shader.Attach(ShaderTypes.Vertex, "Primitives3D.vert"); shader.Attach(ShaderTypes.Fragment, "Primitives.frag"); shader.AddAttribute <float>(3, GL_FLOAT); shader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, ShaderAttributeFlags.IsNormalized); shader.Initialize(); }
public PrimitiveRenderer3D(Camera3D camera) { const int BufferCapacity = 2048; const int IndexCapacity = 256; this.camera = camera; buffer = new PrimitiveBuffer(BufferCapacity, IndexCapacity); GLUtilities.AllocateBuffers(BufferCapacity, IndexCapacity, out bufferId, out indexBufferId, GL_DYNAMIC_DRAW); primitiveShader = new Shader(); primitiveShader.Attach(ShaderTypes.Vertex, "Primitives3D.vert"); primitiveShader.Attach(ShaderTypes.Fragment, "Primitives.frag"); primitiveShader.CreateProgram(); primitiveShader.AddAttribute <float>(3, GL_FLOAT); primitiveShader.AddAttribute <byte>(4, GL_UNSIGNED_BYTE, true); primitiveShader.Bind(bufferId, indexBufferId); }
public SkeletalTester() { const int ShadowMapSize = 2048; GLUtilities.AllocateBuffers(10000, 1000, out bufferId, out indexId, GL_STATIC_DRAW); skeletalShader = new Shader(bufferId, indexId); skeletalShader.Attach(ShaderTypes.Vertex, "Skeletal.vert"); skeletalShader.Attach(ShaderTypes.Fragment, "ModelShadow.frag"); skeletalShader.AddAttribute <float>(3, GL_FLOAT); skeletalShader.AddAttribute <float>(2, GL_FLOAT); skeletalShader.AddAttribute <float>(3, GL_FLOAT); skeletalShader.AddAttribute <float>(2, GL_FLOAT); skeletalShader.AddAttribute <short>(2, GL_SHORT, ShaderAttributeFlags.IsInteger); skeletalShader.AddAttribute <int>(1, GL_INT, ShaderAttributeFlags.IsInteger); skeletalShader.Initialize(); skeletalShader.Use(); skeletalShader.SetUniform("shadowSampler", 0); skeletalShader.SetUniform("textureSampler", 1); shadowMapShader = new Shader(bufferId, indexId); shadowMapShader.Attach(ShaderTypes.Vertex, "ShadowMapSkeletal.vert"); shadowMapShader.Attach(ShaderTypes.Fragment, "ShadowMap.frag"); shadowMapShader.AddAttribute <float>(3, GL_FLOAT, ShaderAttributeFlags.None, 20); shadowMapShader.AddAttribute <float>(2, GL_FLOAT); shadowMapShader.AddAttribute <short>(2, GL_SHORT, ShaderAttributeFlags.IsInteger); shadowMapShader.AddAttribute <int>(1, GL_INT, ShaderAttributeFlags.IsInteger); shadowMapShader.Initialize(); shadowMapTarget = new RenderTarget(ShadowMapSize, ShadowMapSize, RenderTargetFlags.Depth); defaultTexture = ContentCache.GetTexture("Grey.png"); lightDirection = -vec3.UnitY; model = new Model("Tree.dae"); BufferMesh(model.Mesh); }