This commit is contained in:
Richard Smith 2019-05-21 10:56:31 +01:00
parent cd300d256e
commit a703659c9d
76 changed files with 87245 additions and 0 deletions

View file

@ -0,0 +1,49 @@
/*******************************************************************************************
*
* rPBR [shader] - Physically based rendering vertex shader
*
* Copyright (c) 2017 Victor Fisac
*
**********************************************************************************************/
#version 330
# Input vertex attributes
in vec3 vertexPosition
in vec2 vertexTexCoord
in vec3 vertexNormal
in vec4 vertexTangent
# Input uniform values
uniform mat4 mvp
uniform mat4 matModel
# Output vertex attributes (to fragment shader)
out vec3 fragPosition
out vec2 fragTexCoord
out vec3 fragNormal
out vec3 fragTangent
out vec3 fragBinormal
void main()
[
# Calculate binormal from vertex normal and tangent
vec3 vertexBinormal = cross(vertexNormal, vec3(vertexTangent))
# Calculate fragment normal based on normal transformations
mat3 normalMatrix = transpose(inverse(mat3(matModel)))
# Calculate fragment position based on model transformations
fragPosition = vec3(matModel*vec4(vertexPosition, 1.0))
# Send vertex attributes to fragment shader
fragTexCoord = vertexTexCoord
fragNormal = normalize(normalMatrix*vertexNormal)
fragTangent = normalize(normalMatrix*vec3(vertexTangent))
fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal)
fragBinormal = normalize(normalMatrix*vertexBinormal)
fragBinormal = cross(fragNormal, fragTangent)
# Calculate final vertex position
gl_Position = mvp*vec4(vertexPosition, 1.0)
]