unfocused camera light!!!!

This commit is contained in:
connellpaxton 2024-02-06 11:58:49 -05:00
parent 6c317c8ac3
commit d18195fb91
13 changed files with 39 additions and 5 deletions

View File

@ -346,6 +346,7 @@ void Renderer::draw() {
.proj = p, .proj = p,
.time = time, .time = time,
.cam_pos = cam.pos, .cam_pos = cam.pos,
.cam_dir = cam.dir(),
.viewport = glm::vec2(viewport.width, viewport.y), .viewport = glm::vec2(viewport.width, viewport.y),
.tess_factor = tess_factor, .tess_factor = tess_factor,
.tess_edge_size = tess_edge_size, .tess_edge_size = tess_edge_size,

View File

@ -9,6 +9,22 @@
#include <memory> #include <memory>
/* Uniform:
*
* layout (set = 0, binding = 0) uniform Matrices {
* mat4 view;
* mat4 proj;
* float time;
* vec3 cam_pos;
* vec3 cam_dir;
* vec4 frustum[6];
* vec2 viewport;
* float tess_factor;
* float tess_edge_size;
* };
*
*/
struct UniformData { struct UniformData {
glm::mat4 view; glm::mat4 view;
glm::mat4 proj; glm::mat4 proj;
@ -18,6 +34,8 @@ struct UniformData {
float pad2; float pad2;
glm::vec3 cam_pos; glm::vec3 cam_pos;
float pad3; float pad3;
glm::vec3 cam_dir;
float pad4;
glm::vec4 frustum[6]; glm::vec4 frustum[6];
glm::vec2 viewport; glm::vec2 viewport;
float tess_factor; float tess_factor;

View File

@ -14,7 +14,12 @@ struct Camera {
glm::vec3 pos = glm::vec3(0.0f); glm::vec3 pos = glm::vec3(0.0f);
inline glm::mat4 view() { inline glm::vec3 dir() {
return glm::lookAt(pos, pos+glm::vec3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)), glm::vec3(0.0, 1.0, 0.0)); return glm::vec3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi));
} }
inline glm::mat4 view() {
return glm::lookAt(pos, pos+dir(), glm::vec3(0.0, 1.0, 0.0));
}
}; };

View File

@ -10,6 +10,7 @@ layout (set = 0, binding = 0) uniform Matrices {
mat4 proj; mat4 proj;
float time; float time;
vec3 cam_pos; vec3 cam_pos;
vec3 cam_dir;
vec4 frustum[6]; vec4 frustum[6];
vec2 viewport; vec2 viewport;
float tess_factor; float tess_factor;

Binary file not shown.

View File

@ -6,9 +6,15 @@ layout (location = 2) in vec3 pos;
layout (location = 0) out vec4 FragColor; layout (location = 0) out vec4 FragColor;
layout (set = 0, binding = 0) uniform Matrices { layout (set = 0, binding = 0) uniform Matrices {
mat4 mvp; mat4 view;
mat4 proj;
float time; float time;
vec3 cam_pos; vec3 cam_pos;
vec3 cam_dir;
vec4 frustum[6];
vec2 viewport;
float tess_factor;
float tess_edge_size;
}; };
layout (set = 0, binding = 1) uniform sampler2D tex; layout (set = 0, binding = 1) uniform sampler2D tex;

Binary file not shown.

View File

@ -10,6 +10,7 @@ layout (set = 0, binding = 0) uniform Matrices {
mat4 proj; mat4 proj;
float time; float time;
vec3 cam_pos; vec3 cam_pos;
vec3 cam_dir;
vec4 frustum[6]; vec4 frustum[6];
vec2 viewport; vec2 viewport;
float tess_factor; float tess_factor;
@ -19,8 +20,8 @@ layout (set = 0, binding = 0) uniform Matrices {
layout (set = 0, binding = 1) uniform sampler2D heightmap; layout (set = 0, binding = 1) uniform sampler2D heightmap;
void main() { void main() {
//vec3 light_pos = vec3(10.0*cos(time), 10.0, 0.0); /* extract L (light direction) from view matrix */
vec3 L = normalize(cam_pos-pos); vec3 L = -cam_dir;
float r = length(cam_pos-pos); float r = length(cam_pos-pos);
float t = clamp(dot(L, norm), 0.0, 1.0) * 20.0/(r*r); float t = clamp(dot(L, norm), 0.0, 1.0) * 20.0/(r*r);

Binary file not shown.

View File

@ -6,6 +6,7 @@ layout (set = 0, binding = 0) uniform Matrices {
mat4 proj; mat4 proj;
float time; float time;
vec3 cam_pos; vec3 cam_pos;
vec3 cam_dir;
vec4 frustum[6]; vec4 frustum[6];
vec2 viewport; vec2 viewport;
float tess_factor; float tess_factor;

Binary file not shown.

View File

@ -5,6 +5,7 @@ layout (set = 0, binding = 0) uniform Matrices {
mat4 proj; mat4 proj;
float time; float time;
vec3 cam_pos; vec3 cam_pos;
vec3 cam_dir;
vec4 frustum[6]; vec4 frustum[6];
vec2 viewport; vec2 viewport;
float tess_factor; float tess_factor;

Binary file not shown.