Difference between revisions of "Normals"

From vegard.wiki
Jump to navigation Jump to search
(new page)
 
Line 1: Line 1:
 
== dFdx/dFdy ==
 
== dFdx/dFdy ==
 +
 +
You can calculate normals in the fragment shader without passing any vertex normals either to or from the vertex shader. However, that these normals will not interpolate across faces.
  
 
<source lang="GLSL">
 
<source lang="GLSL">

Revision as of 09:24, 28 January 2020

dFdx/dFdy

You can calculate normals in the fragment shader without passing any vertex normals either to or from the vertex shader. However, that these normals will not interpolate across faces.

in vec3 vertex_coord;

// https://community.khronos.org/t/getting-the-normal-with-dfdx-and-dfdy/70177
// http://web.archive.org/web/20120302100158/http://athile.net/library/blog/?tag=dfdx
vec3 normal()
{
    vec3 x = dFdx(vertex_coord);
    vec3 y = dFdy(vertex_coord);
    return normalize(cross(x, y));
}