Fixed Shader Instancing (with that particles and Text, aswell)

This commit is contained in:
Michel Fedde 2020-12-13 14:21:06 +01:00
parent 57fb71d01b
commit fd53c73fa7
8 changed files with 60 additions and 61 deletions

View file

@ -1,12 +1,18 @@
#version 330
#define maxInstances //!instanceMax
struct Instance {
mat4 ModelMatrix;
vec2 TextureOffset;
vec2 TextureScale;
};
layout(location = 0) in vec3 aPos;
layout(location = 1) in vec2 aTex;
layout(location = 3) in vec4 aColor;
uniform mat4 MVP;
uniform Instance[maxInstances] Instances;
uniform bool HasVColor;
out vec2 vTexture;
@ -14,7 +20,7 @@ out vec4 vColor;
out vec3 FragPos;
void ApplyTexModifier() {
vTexture = aTex;
vTexture = aTex * Instances[gl_InstanceID].TextureScale + Instances[gl_InstanceID].TextureOffset;
}
void CheckVertexColor() {
@ -23,7 +29,7 @@ void CheckVertexColor() {
}
void ApplyModelTransformation() {
gl_Position = MVP * vec4(aPos, 1);
gl_Position = MVP * Instances[gl_InstanceID].ModelMatrix * vec4(aPos, 1);
FragPos = vec3(vec4(aPos, 1));
}

View file

@ -15,6 +15,9 @@ namespace SM.Base.Textures
/// </summary>
public class Texture : TextureBase
{
private int? _width;
private int? _height;
/// <summary>
/// Decides if the bitmap will automatically dispose itself.
/// </summary>
@ -28,16 +31,15 @@ namespace SM.Base.Textures
/// <inheritdoc />
public override int Width
{
get => Map.Width;
protected set
{ }
get => _width ?? Map.Width;
protected set => _width = value;
}
/// <inheritdoc />
public override int Height
{
get => Map.Height;
protected set {}
get => _height ?? Map.Height;
protected set => _height = value;
}
public float Aspect { get; private set; }