Initial
This commit is contained in:
commit
b8d1a8022c
649 changed files with 171549 additions and 0 deletions
40
g3d/g3d.vert
Normal file
40
g3d/g3d.vert
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// written by groverbuger for g3d
|
||||
// september 2021
|
||||
// MIT license
|
||||
|
||||
// this vertex shader is what projects 3d vertices in models onto your 2d screen
|
||||
|
||||
uniform mat4 projectionMatrix; // handled by the camera
|
||||
uniform mat4 viewMatrix; // handled by the camera
|
||||
uniform mat4 modelMatrix; // models send their own model matrices when drawn
|
||||
uniform bool isCanvasEnabled; // detect when this model is being rendered to a canvas
|
||||
|
||||
// the vertex normal attribute must be defined, as it is custom unlike the other attributes
|
||||
attribute vec3 VertexNormal;
|
||||
|
||||
// define some varying vectors that are useful for writing custom fragment shaders
|
||||
varying vec4 worldPosition;
|
||||
varying vec4 viewPosition;
|
||||
varying vec4 screenPosition;
|
||||
varying vec3 vertexNormal;
|
||||
varying vec4 vertexColor;
|
||||
|
||||
vec4 position(mat4 transformProjection, vec4 vertexPosition) {
|
||||
// calculate the positions of the transformed coordinates on the screen
|
||||
// save each step of the process, as these are often useful when writing custom fragment shaders
|
||||
worldPosition = modelMatrix * vertexPosition;
|
||||
viewPosition = viewMatrix * worldPosition;
|
||||
screenPosition = projectionMatrix * viewPosition;
|
||||
|
||||
// save some data from this vertex for use in fragment shaders
|
||||
vertexNormal = VertexNormal;
|
||||
vertexColor = VertexColor;
|
||||
|
||||
// for some reason models are flipped vertically when rendering to a canvas
|
||||
// so we need to detect when this is being rendered to a canvas, and flip it back
|
||||
if (isCanvasEnabled) {
|
||||
screenPosition.y *= -1.0;
|
||||
}
|
||||
|
||||
return screenPosition;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue