projects
/
demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added a vulkan util (vkutil.h/.cc)
[demo]
/
src
/
morph_renderer.cc
diff --git
a/src/morph_renderer.cc
b/src/morph_renderer.cc
index
f31b8fe
..
d076114
100644
(file)
--- a/
src/morph_renderer.cc
+++ b/
src/morph_renderer.cc
@@
-1,8
+1,10
@@
#include "global.h"
#include "morph_renderer.h"
#include "global.h"
#include "morph_renderer.h"
+#include "object.h"
#include "scene.h"
#include "shader.h"
#include "shader_manager.h"
#include "scene.h"
#include "shader.h"
#include "shader_manager.h"
+#include "texture.h"
MorphRenderer::MorphRenderer()
{
MorphRenderer::MorphRenderer()
{
@@
-13,6
+15,8
@@
MorphRenderer::MorphRenderer()
/* we won't use them */
skytex = 0;
dskytex = 0;
/* we won't use them */
skytex = 0;
dskytex = 0;
+
+ fog_density = 0;
}
MorphRenderer::~MorphRenderer()
}
MorphRenderer::~MorphRenderer()
@@
-30,11
+34,18
@@
bool MorphRenderer::create()
diff_loc = sprog->get_uniform_location("diffuse");
spec_loc = sprog->get_uniform_location("specular");
shin_loc = sprog->get_uniform_location("shininess");
diff_loc = sprog->get_uniform_location("diffuse");
spec_loc = sprog->get_uniform_location("specular");
shin_loc = sprog->get_uniform_location("shininess");
+ t_loc = sprog->get_uniform_location("t");
+ fog_loc = sprog->get_uniform_location("fog_density");
/* uniform locations for matrices */
mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
mview_loc = sprog->get_uniform_location("mview");
/* uniform locations for matrices */
mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
mview_loc = sprog->get_uniform_location("mview");
+ mmod_loc = sprog->get_uniform_location("mmod");
+
+ dstex_loc = sprog->get_uniform_location("dstex");
+ if(dstex_loc != -1)
+ sprog->set_uniformi(dstex_loc, 1);
return true;
}
return true;
}
@@
-47,9
+58,20
@@
void MorphRenderer::draw() const
if(!sprog->link())
return;
if(!sprog->link())
return;
+ if(dskytex) {
+ dskytex->bind(1);
+ }
+
sprog->use();
for(size_t i=0; i<scene->objects.size(); i++) {
sprog->use();
for(size_t i=0; i<scene->objects.size(); i++) {
+ float t = (sin(time_sec + 7.3 * noise(i * M_PI)) + 1) * 0.5;
+ if(t_loc != -1)
+ sprog->set_uniformf(t_loc, t);
+
+ if(mmod_loc != -1)
+ sprog->set_uniform_matrix(mmod_loc, scene->objects[i]->transform.upper3x3());
+
draw_object(scene->objects[i]);
}
}
\ No newline at end of file
draw_object(scene->objects[i]);
}
}
\ No newline at end of file