]> git.localhorst.tv Git - blobs.git/blobdiff - src/graphics/shader.cpp
track creature with camera
[blobs.git] / src / graphics / shader.cpp
index 1b641b07107d8f2954dca055c7e249e3c3b410fa..6a08bb5f99be5402edda61b239be9e145b58cb40 100644 (file)
@@ -282,6 +282,14 @@ void PlanetSurface::SetM(const glm::mat4 &mm) noexcept {
        prog.Uniform(mvp_handle, mvp);
 }
 
+void PlanetSurface::SetV(const glm::mat4 &vv) noexcept {
+       v = vv;
+       mv = v * m;
+       mvp = p * mv;
+       prog.Uniform(mv_handle, mv);
+       prog.Uniform(mvp_handle, mvp);
+}
+
 void PlanetSurface::SetVP(const glm::mat4 &vv, const glm::mat4 &pp) noexcept {
        v = vv;
        p = pp;
@@ -458,6 +466,14 @@ void SunSurface::SetM(const glm::mat4 &mm) noexcept {
        prog.Uniform(mvp_handle, mvp);
 }
 
+void SunSurface::SetV(const glm::mat4 &vv) noexcept {
+       v = vv;
+       mv = v * m;
+       mvp = p * mv;
+       prog.Uniform(mv_handle, mv);
+       prog.Uniform(mvp_handle, mvp);
+}
+
 void SunSurface::SetVP(const glm::mat4 &vv, const glm::mat4 &pp) noexcept {
        v = vv;
        p = pp;
@@ -538,7 +554,7 @@ CreatureSkin::CreatureSkin()
 
                "void main() {\n"
                        "vec3 tex_color = texture(tex_sampler, frag_tex_uv).rgb;\n"
-                       "vec3 total_light = tex_color * vec3(0.01, 0.01, 0.01);\n"
+                       "vec3 total_light = tex_color * vec3(0.1, 0.1, 0.1);\n"
                        "for (int i = 0; i < num_lights; ++i) {\n"
                                "vec3 to_light = light[i].position - vtx_viewspace;\n"
                                "float distance = length(to_light) + length(vtx_viewspace);\n"
@@ -592,6 +608,14 @@ void CreatureSkin::SetM(const glm::mat4 &mm) noexcept {
        prog.Uniform(mvp_handle, mvp);
 }
 
+void CreatureSkin::SetV(const glm::mat4 &vv) noexcept {
+       v = vv;
+       mv = v * m;
+       mvp = p * mv;
+       prog.Uniform(mv_handle, mv);
+       prog.Uniform(mvp_handle, mvp);
+}
+
 void CreatureSkin::SetVP(const glm::mat4 &vv, const glm::mat4 &pp) noexcept {
        v = vv;
        p = pp;