first commit
This commit is contained in:
35
assets/shaders/mesh.frag
Normal file
35
assets/shaders/mesh.frag
Normal file
@@ -0,0 +1,35 @@
|
||||
#version 450 core
|
||||
layout(location = 0) out vec4 oColor;
|
||||
|
||||
layout(std140, binding = 0) uniform PerFrame {
|
||||
mat4 uView;
|
||||
mat4 uProj;
|
||||
vec4 uLightDir;
|
||||
};
|
||||
layout(std140, binding = 2) uniform Material {
|
||||
vec4 uAlbedo; // rgb used, a padding
|
||||
};
|
||||
|
||||
in VS_OUT {
|
||||
vec3 wPos;
|
||||
vec3 wNrm;
|
||||
vec2 uv;
|
||||
flat int hasNrm;
|
||||
flat int hasUV;
|
||||
} v;
|
||||
|
||||
vec3 fallbackNormal(vec3 wPos) {
|
||||
vec3 dx = dFdx(wPos), dy = dFdy(wPos);
|
||||
vec3 c = cross(dx, dy);
|
||||
float l2 = dot(c, c);
|
||||
return (l2 < 1e-12) ? vec3(0, 0, 1) : normalize(c);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec3 N = (v.hasNrm != 0) ? normalize(v.wNrm) : fallbackNormal(v.wPos);
|
||||
vec3 L = normalize(-uLightDir.xyz);
|
||||
float ndl = max(dot(N, L), 0.0);
|
||||
vec3 ambient = vec3(0.08);
|
||||
vec3 colorLinear = ambient + uAlbedo.rgb * ndl;
|
||||
oColor = vec4(pow(colorLinear, vec3(1.0/2.2)), 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user