Added velocity buffer + start of TAA implementation
This commit is contained in:
@@ -10,6 +10,8 @@ layout(location = 4) in vec3 Bitangent;
|
||||
uniform mat4 u_Model;
|
||||
uniform mat4 u_View;
|
||||
uniform mat4 u_Projection;
|
||||
uniform mat4 u_PreviousViewModel;
|
||||
uniform vec2 u_Jitter;
|
||||
|
||||
out vec4 FragPos;
|
||||
out mat3 TBN;
|
||||
@@ -18,6 +20,7 @@ out mat4 Inv_Proj;
|
||||
out mat4 Inv_View;
|
||||
out mat4 view;
|
||||
out vec3 o_Tangent;
|
||||
out vec4 PreviousFragPos;
|
||||
|
||||
void main()
|
||||
{
|
||||
@@ -37,8 +40,11 @@ void main()
|
||||
Inv_View = u_View;
|
||||
o_Tangent = Tangent;
|
||||
|
||||
gl_Position = u_Projection * u_View * u_Model * vec4(VertexPosition, 1.0f);
|
||||
FragPos = gl_Position;
|
||||
vec4 clipPosition = u_Projection * u_View * u_Model * vec4(VertexPosition, 1.0f);
|
||||
FragPos = clipPosition;
|
||||
|
||||
gl_Position = clipPosition;
|
||||
PreviousFragPos = u_PreviousViewModel * vec4(VertexPosition, 1.0f);
|
||||
}
|
||||
|
||||
#shader fragment
|
||||
@@ -49,14 +55,14 @@ layout(location = 1) out vec4 gNormal;
|
||||
layout(location = 2) out vec4 gMaterial;
|
||||
layout(location = 3) out int gEntityID;
|
||||
layout(location = 4) out float gEmissive;
|
||||
layout(location = 5) out vec4 gTexelOffset;
|
||||
layout(location = 5) out vec4 gVelocity;
|
||||
|
||||
in vec4 FragPos;
|
||||
in vec2 UV;
|
||||
in mat3 TBN;
|
||||
in mat4 Inv_Proj;
|
||||
in mat4 Inv_View;
|
||||
|
||||
in vec4 PreviousFragPos;
|
||||
|
||||
// Material
|
||||
uniform sampler2D m_Albedo;
|
||||
@@ -143,27 +149,8 @@ void main()
|
||||
gMaterial.b = finalRoughness;
|
||||
|
||||
gEntityID = int(u_EntityID);
|
||||
|
||||
gEmissive = u_Emissive;
|
||||
|
||||
vec3 right = vec3(1.0, 0, 0);
|
||||
right = TBN * normalize(right);
|
||||
vec3 up = TBN * normalize(vec3(0, 1, 0));
|
||||
|
||||
vec2 textureSize2d = textureSize(m_Albedo, 0);
|
||||
vec2 pixelPos = UV * textureSize2d;
|
||||
vec2 centerOfPixel = (vec2(0.5) + floor(pixelPos));
|
||||
vec2 uvCenter = centerOfPixel;
|
||||
|
||||
vec3 uvDiff = vec3(uvCenter.x - pixelPos.x, uvCenter.y - pixelPos.y, 0.0f) / vec3(textureSize2d.x, textureSize2d.y, 1.0f);
|
||||
|
||||
uvDiff = uvDiff.x * right;
|
||||
uvDiff = uvDiff.y * up;
|
||||
//uvDiff * right;
|
||||
uvDiff = uvDiff * 100.0f;
|
||||
vec2 offset = (centerOfPixel - vec2(FragPos.x, FragPos.y)) * 10.0f;
|
||||
|
||||
vec3 finalTransformed = normalize(uvDiff);
|
||||
vec4 conversion = Inv_Proj * Inv_View * vec4(finalTransformed, 1.0f);
|
||||
gTexelOffset = vec4(conversion.x / 2.0 + 0.5f, conversion.y / 2.0 + 0.5f, 0, 1);
|
||||
vec4 positionDifference = FragPos - PreviousFragPos;
|
||||
gVelocity = vec4((positionDifference.x + 1.0) / 2.0, (positionDifference.y + 1.0) / 2.0, 0.0f, 1);
|
||||
}
|
||||
Reference in New Issue
Block a user