This commit is contained in:
ezwrk 2024-06-05 14:16:51 +03:00
commit b8d1a8022c
649 changed files with 171549 additions and 0 deletions

40
g3d/g3d.vert Normal file
View 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;
}