add an extra body for testing. slightly better zoom behavior

This commit is contained in:
2025-08-18 14:02:52 -05:00
parent a00bac0b3f
commit 718cca3ad7
2 changed files with 16 additions and 7 deletions

View File

@@ -80,7 +80,7 @@ void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
glm::vec4 k = camera_t[2];
float d = yoffset;
camera_loc += k * (-d * glm::length(camera_loc) / 10);
camera_loc += k * (d/10 * std::max(glm::length(camera_loc), 1.0f));
camera_t = glm::lookAt(camera_loc, focal_point, up);
}
@@ -138,6 +138,14 @@ int main() {
return -1;
b.shader = shader;
b.pose = glm::translate(b.pose, glm::vec3(0, 0, 0));
b.color = glm::vec4(0.5, 0, 0, 1);
body b2;
if (!load_body(&b2, "Icosphere.obj"))
return -1;
b2.shader = shader;
b2.pose = glm::translate(b.pose, glm::vec3(2, 0, 0));
b2.color = glm::vec4(0, 0.5, 0, 1);
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
//set_uniform(shader, "color", glm::vec4 { sin(time), sin(time + glm::radians(45.0f)), sin(time + glm::radians(90.0f)), 1.0 } / 2.0f);
@@ -154,10 +162,11 @@ int main() {
while (!glfwWindowShouldClose(window)) {
process_input();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
set_uniform(shader, "camera_t", camera_t);
set_uniform(shader, "projection_t", projection_t);
set_uniform(b.shader, "projection_t", projection_t);
set_uniform(b.shader, "camera_t", camera_t);
draw_body(b);
draw_body(b);
draw_body(b2);
glfwSwapBuffers(window);
glfwPollEvents();

View File

@@ -7,10 +7,10 @@ in vec3 frag_pos;
out vec4 frag_color;
void main() {
vec3 dx = dFdx(frag_pos) * 100;
vec3 dy = dFdy(frag_pos) * 100;
vec3 dx = dFdx(frag_pos) * 500;
vec3 dy = dFdy(frag_pos) * 500;
vec3 N = normalize(cross(dFdx(frag_pos), dFdy(frag_pos)));
frag_color = color + vec4(N/2, 1)/3;
frag_color = color + vec4(N/2, 1)/2;
//frag_color = vec4(length(dx), length(dy), length(dy), 1.0);
//frag_color += color;
}