29#include <unordered_map>
43 virtual std::string
Name()
const=0;
45 virtual std::string
Source(
int i)
const=0;
53 std::string
Name()
const {
return name; }
55 std::string
Source(
int i)
const {
return s; }
94 void set_var(
const char *
name,
float val1,
float val2);
98 void set_var(
const char *
name,
float val1,
float val2,
float val3,
float val4);
99 void set_var(
int name,
float val1,
float val2,
float val3,
float val4);
101 void set_var(
const char *
name,
float *array,
int count);
102 void set_var(
const char *
name,
int *array,
int count);
106 void set_var(
const char *
name,
const std::vector<Point> &v);
112 void attr_loc(std::string s,
int index);
118 std::unordered_map<uint32_t, int>
locs;
119 std::unordered_map<Low_GLint, Matrix>
cache;
127 std::string
Name()
const {
return "testshader"; }
132 " gl_position = ftransform();\n"
139 std::string
Name()
const {
return "testfshader"; }
144 " gl_FragColor=vec4(1.0,0.0,0.0,1.0);\n"
187 virtual std::string
FragmentColor()
const {
return "vec4(1.0,0.0,0.0,1.0)"; }
194 std::string
Name()
const {
return "Shader"; }
198 std::cout << shader.VertexShader() << std::endl;
199 return shader.VertexShader();
209 std::string
Name()
const {
return "Shader"; }
213 std::cout << shader.FragmentShader() << std::endl;
214 return shader.FragmentShader();
224 std::string
Name()
const {
return "Array"; }
225 int Count()
const {
return shaders.size(); }
232 std::vector<std::string> shaders;
253 p1->SetParameters(p);
254 p2->SetParameters(p);
266 prog.push_back(vertex);
267 prog.push_back(fragment);
270 void use() { prog.use(); }
298 p.
set_var(
"lightcolor", light_color);
299 p.
set_var(
"speccolor", speccolor);
310 Color light_color, speccolor;
334 virtual void Provides(std::vector<int> &vec)
const { }
345 for(
unsigned int i=0;i<vec.size();i++)
355 "uniform vec3 halfway;\n"
356 "uniform vec3 light;\n"
357 "uniform vec3 lightcolor;\n"
358 "uniform vec3 speccolor;\n";
363 "vec3 n = normalize(gl_Normal);\n"
364 "float col = dot(n, halfway);\n"
365 "float col2 = dot(n, light);\n"
367 "if (col < 0.0) col = 0.0;\n"
368 "if (col > 1.0) col = 1.0;\n"
369 "if (col2 < 0.0) col2 = 0.0;\n"
370 "if (col2 > 1.0) col2 = 1.0;\n"
371 "float r = col*lightcolor.r+col2*speccolor.r;\n"
372 "float g = col*lightcolor.g+col2*speccolor.g;\n"
373 "float b = col*lightcolor.b+col2*speccolor.b;\n"
374 "if (r > 1.0) r=1.0;\n"
375 "if (g > 1.0) g=1.0;\n"
376 "if (b > 1.0) b=1.0;\n"
377 "vec3 vv = vec3(r,g,b);\n"
378 "gl_FrontColor.rgb = vv;\n"
379 "gl_BackColor.rgb = vv;\n";
390 std::string(
"vec4 FragColor") + s.str() +
";\n"
391 "FragColor" + s.str() +
".rgb=gl_Color.rgb;\n";
404 pp.
set_var(
"normal_center", p);
405 pp.
set_var(
"mix_rate", mix_rate);
421 "uniform vec3 normal_center;\n"
422 "uniform float mix_rate;\n"
423 "varying vec3 normal;\n";
427 return "vec3 vl = gl_NormalMatrix * gl_Normal;\n"
428 "vec3 vk = (gl_ModelViewMatrix*gl_Vertex).xyz-normal_center;\n"
429 "vl = normalize(vl);\n"
430 "vk = normalize(vk);\n"
431 "normal=mix(vk, vl, mix_rate);\n";
449 for(std::vector<int>::const_iterator i=
env.begin();i!=
env.end();i++)
456 for(
unsigned int i=0;i<vec.size();i++)
466 return "varying vec3 normal;\n";
473 return "normal=gl_NormalMatrix * gl_Normal;\n";
480 "varying vec3 normal;\n"
481 "uniform vec3 halfway;\n"
482 "uniform vec3 light;\n"
483 "uniform vec3 lightcolor;\n"
484 "uniform vec3 speccolor;\n";
492 "vec3 n = normalize(normal);\n"
493 "float col = dot(n, halfway);\n"
494 "float col2 = dot(n, light);\n"
501 "if (col < 0.0) col = 0.0;\n"
502 "if (col > 1.0) col = 1.0;\n"
503 "if (col2 < 0.0) col2 = 0.0;\n"
504 "if (col2 > 1.0) col2 = 1.0;\n"
505 "float r = col*lightcolor.r+col2*speccolor.r;\n"
506 "float g = col*lightcolor.g+col2*speccolor.g;\n"
507 "float b = col*lightcolor.b+col2*speccolor.b;\n"
508 "if (r > 1.0) r=1.0;\n"
509 "if (g > 1.0) g=1.0;\n"
510 "if (b > 1.0) b=1.0;\n"
511 "vec4 FragColor") + s.str() +
";\n"
512 "FragColor" + s.str() +
".r = r;\n"
513 "FragColor" + s.str() +
".g = g;\n"
514 "FragColor" + s.str() +
".b = b;\n";
530 "gl_Position = ftransform();\n";
561 "gl_FragColor.r=1.0;\n"
562 "gl_FragColor.g=0.0;\n"
563 "gl_FragColor.b=0.0;\n";
587 "gl_FragColor.a=1.0;\n";
605 return "varying float dis;\n"
606 "attribute float centerx;\n"
607 "attribute float centery;\n"
608 "attribute float centerz;\n";
613 "vec3 v = vec3(centerx,centery,centerz);\n"
614 "dis = v.x*v.x+v.y*v.y+v.z*v.z;\n";
619 "varying float dis;\n"
620 "uniform float distance;\n";
625 "gl_FragColor.a = dis-distance;\n";
635 p.
set_var(
"distance", distance);
644 DiscardAttributes(
int centerx,
int centery,
int centerz) : centerx(centerx), centery(centery), centerz(centerz) { }
651 void Attr(std::vector<Attrib> &vec)
659 int centerx, centery, centerz;
674 "uniform vec3 box;\n"
675 "uniform float time;\n";
680 " vec3 n = vec3(0.0,0.0,0.0); //noise3(gl_Vertex+vec4(time,time,time,time));\n"
681 " vec4 vertex = gl_Vertex + vec4(box.x*n.x, box.y*n.y, box.z*n.z,0.0);\n"
682 " gl_Position = gl_ModelViewProjectionMatrix * vertex;\n";
712 BlobParameters(Point center, Point center2,
float r) : center(center), center2(center2), r(r) { }
713 void set_points(Point c, Point c2,
float r) { center = c; center2=c2; this->r=r; }
716 p.
set_var(
"center1x", center.x);
717 p.
set_var(
"center1y", center.y);
718 p.
set_var(
"center1z", center.z);
719 p.
set_var(
"center2x", center2.x);
720 p.
set_var(
"center2y", center2.y);
721 p.
set_var(
"center2z", center2.z);
724 virtual ~BlobParameters() { }
726 Point center, center2;
742 "vec4 line(float t, vec4 x_0, vec4 x_1) { return x_0+(x_1-x_0)*t; }\n"
743 "float f(vec4 p, vec4 x_0, vec4 x_1, vec4 x_2) { return ((p.x-x_0.x)*(p.x-x_0.x)+(p.y-x_0.y)*(p.y-x_0.y)+(p.z-x_0.z)*(p.z-x_0.z)); }\n"
744 "float g(vec4 p, vec4 x_0, vec4 x_1, vec4 x_2) { return ((p.x-x_2.x)*(p.x-x_2.x)+(p.y-x_2.y)*(p.y-x_2.y)+(p.z-x_2.z)*(p.z-x_2.z)); }\n"
745 "float h(vec4 p, vec4 x_0, vec4 x_1, vec4 x_2, float r)\n"
747 " float fp = f(p, x_0, x_1, x_2);\n"
748 " float gp = g(p, x_0, x_1, x_2);\n"
749 " if (fp < 1.0) fp = 1.0;\n"
750 " if (gp < 1.0) gp = 1.0;\n"
751 " return 1.0/(fp)+1.0/(gp)-r;\n"
754 "float H(float tt, vec4 x_0, vec4 x_1, vec4 x_2, float r) \n"
756 " return h(line(tt, x_0, x_1), x_0, x_1, x_2, r); \n"
758 " float t_func(float t_0, float t_1, vec4 x_0, vec4 x_1, vec4 x_2, float r)\n"
763 " float Ht = H(t, x_0, x_1, x_2, r);\n"
764 " if (Ht<0.1) return t;\n"
766 " Ht = H(t, x_0, x_1, x_2, r);\n"
767 " if (Ht<0.1) return t;\n"
769 " Ht = H(t, x_0, x_1, x_2, r);\n"
770 " if (Ht<0.1) return t;\n"
772 " Ht = H(t, x_0, x_1, x_2, r);\n"
773 " if (Ht<0.1) return t;\n"
778 "vec4 adjustpoint(vec4 x_0, vec4 x_1, vec4 x_2, float r)\n"
780 " float tt = t_func(1.0,5.0, x_0, x_1, x_2, r);\n"
781 " return line(tt, x_0, x_1);\n"
784 "uniform float center1x;\n"
785 "uniform float center1y;\n"
786 "uniform float center1z;\n"
787 "uniform float center2x;\n"
788 "uniform float center2y;\n"
789 "uniform float center2z;\n"
790 "uniform float radius;\n"
796 "vec4 center1 = vec4(center1x, center1y, center1z,0.0);\n"
797 "vec4 center2 = vec4(center2x, center2y, center2z,0.0);\n"
798 "vec4 vertex = gl_Vertex;\n"
799 "vertex.x += center1.x;\n"
800 "vertex.y += center1.y;\n"
801 "vertex.z += center1.z;\n"
802 "vec4 p = adjustpoint(center1,vertex, center2, radius);\n"
806 "gl_Position = gl_ModelViewProjectionMatrix * p;\n";
856 "uniform vec3 point;\n"
857 "uniform vec3 x_vec;\n"
858 "uniform vec3 y_vec;\n"
865 "vec3 c = gl_Vertex.xyz;\n"
866 "vec3 v = c - point;\n"
867 "float d1 = dot(v,x_vec);\n"
868 "float d2 = dot(v,y_vec);\n"
870 "float xdist = length(x_vec);\n"
871 "float ydist = length(y_vec);\n"
873 "float d1a = d1 / xdist / xdist*512;\n"
874 "float d1b = d2 / ydist / ydist*512;\n"
876 "gl_TexCoord[0] = vec4(d1a, d1b,0.0,0.0);\n";
895 for(std::vector<int>::const_iterator i=
env.begin();i!=
env.end();i++)
921 s+=
"vec4 f0 = FragColor0;\n";
923 for(
int i=1;i<fragnum;i++)
925 std::stringstream ss;
927 std::stringstream ss1;
929 s += std::string(
"vec4 f") + ss.str() +
" = max(f" + ss1.str() +
",FragColor" + ss.str() +
");\n";
931 std::stringstream frag;
935 s+=std::string(
"gl_FragColor.rgb = f") + frag.str() +
".rgb;\n";
950 for(std::vector<int>::const_iterator i=
env.begin();i!=
env.end();i++)
957 for(
unsigned int i=0;i<vec.size();i++)
970 return "gl_TexCoord[0] = gl_MultiTexCoord0;\n";
976 return "uniform sampler2D tex;\n";
983 std::string(
"vec4 color = texture2D(tex,gl_TexCoord[0].st);\n"
984 "vec4 FragColor") + s.str() +
";\n"
985 "FragColor" + s.str() +
" = color;\n";
1003 "float Index(float xx, float yy, float time) {\n"
1006 " float lx = cos(m*3.14159*xx);\n"
1007 " float ly = cos(n*3.14159*yy);\n"
1008 " float lt = cos(8.0*time);\n"
1009 " float wave = 0.02*lx*ly*lt;\n"
1013 " float lx2 = cos(m2*3.14159*xx);\n"
1014 " float ly2 = cos(n2*3.14159*yy);\n"
1015 " float lt2 = cos(18.0*time);\n"
1016 " float wave2 = 0.02*lx2*ly2*lt2;\n"
1018 " return wave+wave2;\n"
1020 "uniform float time;\n"
1021 "attribute float x;\n"
1022 "attribute float y;\n"
1023 "attribute float nx_x;\n"
1024 "attribute float nx_y;\n"
1025 "attribute float nx_z;\n"
1026 "attribute float ny_x;\n"
1027 "attribute float ny_y;\n"
1028 "attribute float ny_z;\n"
1029 "varying vec3 normal;\n"
1035 "float wave = Index(x,y,time);\n"
1036 "float wavex = Index(x+0.01,y,time);\n"
1037 "float wavey = Index(x,y+0.01,time);\n"
1040 "vec3 n = gl_NormalMatrix * gl_Normal;\n"
1041 "vec3 a = wave*n;\n"
1042 "vec3 ax = wavex*n;\n"
1043 "vec3 ay = wavey*n;\n"
1044 "vec4 v = gl_Vertex+vec4(a.x,a.y,a.z,0.0);\n"
1045 "vec3 vx = vec3(nx_x+ax.x,nx_y+ax.y,nx_z+ax.z);\n"
1046 "vec3 vy = vec3(ny_x+ay.x,ny_y+ay.y,ny_z+ay.z);\n"
1047 "vec3 dx = vx-v.xyz;\n"
1048 "vec3 dy = vy-v.xyz;\n"
1049 "normal = cross(dx,dy);\n"
1050 "gl_Position = gl_ModelViewProjectionMatrix * v;\n"
1067 int nx_x,
int nx_y,
int nx_z,
1068 int ny_x,
int ny_y,
int ny_z
1069 ) : xid(xid), yid(yid),
1070 nx_x(nx_x), nx_y(nx_y), nx_z(nx_z),
1071 ny_x(ny_x), ny_y(ny_y), ny_z(ny_z)
1085 void Attr(std::vector<Attrib> &vector)
1087 vector.push_back(x);
1088 vector.push_back(y);
1089 vector.push_back(vnx_x);
1090 vector.push_back(vnx_y);
1091 vector.push_back(vnx_z);
1092 vector.push_back(vny_x);
1093 vector.push_back(vny_y);
1094 vector.push_back(vny_z);
1098 mutable Attrib vnx_x, vnx_y, vnx_z;
1099 mutable Attrib vny_x, vny_y, vny_z;
1101 int nx_x, nx_y, nx_z;
1102 int ny_x, ny_y, ny_z;
1133 "attribute int object_id;\n"
1134 "uniform float pos_x[" +
stringify(count) +
"];\n"
1135 "uniform float pos_y[" +
stringify(count) +
"];\n"
1136 "uniform float pox_z[" +
stringify(count) +
"];\n";
1141 "vec4 v = vec4(pos_x[object_id], pos_y[object_id], pos_z[object_id], 0.0);\n"
1143 "gl_Position = gl_ModelViewProjectionMatrix * v;\n";
1178 s += (*i)->VertexGlobals();
1180 s+=
"void main() {\n";
1183 s += (*i)->VertexCodeGen();
1193 s += (*i)->FragmentGlobals();
1195 s+=
"void main() {\n";
1198 s += (*i)->FragmentCodeGen();
1209 std::cout <<
"Config" << std::endl;
1210 std::vector<int> conf;
1211 for(std::vector<ShaderPiece*>::iterator i=vec.begin();i!=vec.end();i++)
1213 (*i)->Provides(conf);
1215 std::vector<int>::iterator i1 = std::find(conf.begin(), conf.end(), (
int)
ReqPosition);
1218 std::vector<int>::iterator i2 = std::find(conf.begin(), conf.end(), (
int)
ReqFragColorRGB);
1222 std::vector<int>::iterator i3 = std::find(conf.begin(), conf.end(), (
int)
ReqFragColorA);
1226 std::vector<int>::iterator i4 = std::find(conf.begin(), conf.end(), (
int)
ReqFragColorCombiner);
1227 if (i4 == conf.end())
1230 for(std::vector<ShaderPiece*>::iterator i=vec.begin();i!=vec.end();i++)
1237 std::vector<ShaderPiece*> vec;
1256 { pieces.push_back(p); }
1280 pair->set_params(p);
1289 pair->set_attribs(p);
1306 " gl_Position = gl_ModelViewProjectionMatrix * Transform(gl_Vertex);\n"
1313 LinearInterpolationParameters(
int startpos_id,
int endpos_id,
int time_id,
Point startpos,
Point endpos,
float starttime,
float endtime,
float currenttime) : startpos(startpos), endpos(endpos), starttime(starttime), endtime(endtime), currenttime(currenttime), startpos_id(startpos_id), endpos_id(endpos_id), time_id(time_id) { }
1316 pp.
set_var(startpos_id, startpos.x, startpos.y, startpos.z, starttime);
1317 pp.
set_var(endpos_id, endpos.x, endpos.y, endpos.z, endtime);
1318 pp.
set_var(time_id, currenttime);
1337 pp.
set_var(
"startpos", startpos );
1355 "uniform vec4 startpos;\n"
1356 "uniform vec4 endpos;\n"
1357 "uniform float time;\n";
1362 "float t = time - startpos.w;\n"
1363 "t /= endpos.w-startpos.w;\n"
1364 "vec4 p = mix(startpos, endpos, t);\n"
1365 "vec4 k = p + gl_Vertex;\n"
1367 "vec4 res = gl_ModelViewProjectionMatrix * k;\n"
1368 "gl_Position = res;\n";
1403 void Link(std::string s2d, std::string r, std::string c1) { c2d=s2d; rr = r; cc = c1; }
1412 "uniform float r"+rr+
";\n"
1413 "uniform vec2 c"+cc+
";\n"
1414 "vec2 Curve2d"+c2d+
"(float k) {\n"
1416 "v.x = r"+rr+
"*cos(k) + c"+cc+
".x;\n"
1417 "v.y = r"+rr+
"*sin(k) + c"+cc+
".y;\n"
1435 void Link(std::string s2d, std::string s3d, std::string pl) { c2d=s2d; c3d=s3d; pll = pl; }
1445 "uniform vec3 plane_u_p"+pll+
";\n"
1446 "uniform vec3 plane_u_x"+pll+
";\n"
1447 "uniform vec3 plane_u_y"+pll+
";\n"
1448 "vec2 Curve2d"+c2d+
"(float x);\n"
1449 "vec3 Curve3d"+c3d+
"(float a) {\n"
1450 " vec2 pp = Curve2d(a); \n"
1451 " vec3 pp2 = plane_u_p"+pll+
" + pp.x*plane_u_x"+pll+
" + pp.y*plane_u_y"+pll+
";\n"
1474 std::map<std::string, std::string> v_shaders;
1475 std::map<std::string, std::string> f_shaders;
1476 std::map<std::string, std::string> g_shaders;
1485 ~ShaderSeq() {
int s = progs.size();
for(
int i=0;i<s;i++)
delete progs[i]; }
1486 int GetShader(std::string v_format, std::string f_format, std::string g_format, std::vector<std::string> v_vec=std::vector<std::string>(), std::vector<std::string> f_vec=std::vector<std::string>(),
bool trans=
true,
ShaderModule *mod=0,
ShaderCall *vertex_c=0,
ShaderCall *fragment_c=0, std::string v_defines=
"", std::string f_defines=
"", std::string v_shader=
"", std::string f_shader=
"");
1495 std::vector<Program*> progs;
1511void DrawAnim(
float start,
float end,
AnimState &state,
const std::vector<Attrib> &attribs=std::vector<Attrib>());
P pieces(int c, EveryApi &ev)
Definition test.cpp:30
std::string unique_id()
Definition GameApi_shm.cc:50
std::string stringify(int i)
Definition Shader.cc:817
std::vector< std::string > replace_c_template_unique_ids(std::string defines, std::string define)
Definition Shader.cc:5985
ShaderProvides
Definition Shader.hh:318
@ ReqNormal
Definition Shader.hh:319
@ ReqFragColorRGB
Definition Shader.hh:320
@ ReqTexCoord0
Definition Shader.hh:323
@ ReqPosition
Definition Shader.hh:322
@ ReqFragColorA
Definition Shader.hh:321
@ ReqFragColorCombiner
Definition Shader.hh:324
void UpdateAnim(Anim &anim, AnimState &state, const std::vector< Attrib > &attribs=std::vector< Attrib >())
Definition Shader.cc:6821
void DrawAnim(float start, float end, AnimState &state, const std::vector< Attrib > &attribs=std::vector< Attrib >())
Definition Shader.cc:6839
Definition Effect.hh:3454
Definition Effect.hh:3441
int Count() const
Definition Shader.hh:225
std::string Source(int i) const
Definition Shader.hh:226
ArrayShader()
Definition Shader.hh:223
void push_back(std::string s)
Definition Shader.hh:230
std::string Name() const
Definition Shader.hh:224
virtual std::string VertexCodeGen() const
Definition Shader.hh:793
virtual std::string FragmentGlobals() const
Definition Shader.hh:808
virtual std::string VertexGlobals() const
Definition Shader.hh:739
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:734
virtual std::string FragmentCodeGen() const
Definition Shader.hh:812
Definition Shader.hh:1400
void SetParameters(Program &p) const
Definition Shader.hh:1404
void Set(Point center, float r_)
Definition Shader.hh:1402
bool VertexShader() const
Definition Shader.hh:1422
void Link(std::string s2d, std::string r, std::string c1)
Definition Shader.hh:1403
std::string Shader() const
Definition Shader.hh:1409
Definition VectorTools.hh:380
CombineParameters()
Definition Shader.hh:249
void SetParameters(Program &p) const
Definition Shader.hh:251
CombineParameters(ShaderParameters &p1_, ShaderParameters &p2_)
Definition Shader.hh:250
void SetValues(ShaderParameters *p1_, ShaderParameters *p2_)
Definition Shader.hh:256
Definition Shader.hh:1432
void SetParameters(Program &p) const
Definition Shader.hh:1436
bool VertexShader() const
Definition Shader.hh:1456
void Set(Plane p)
Definition Shader.hh:1434
void Link(std::string s2d, std::string s3d, std::string pl)
Definition Shader.hh:1435
std::string Shader() const
Definition Shader.hh:1442
void SetAttribs(Program &p) const
Definition Shader.hh:645
void Attr(std::vector< Attrib > &vec)
Definition Shader.hh:651
DiscardAttributes(int centerx, int centery, int centerz)
Definition Shader.hh:644
DiscardParameters(float distance)
Definition Shader.hh:632
void SetParameters(Program &p) const
Definition Shader.hh:633
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:597
virtual std::string FragmentCodeGen() const
Definition Shader.hh:622
virtual void Config(const std::vector< int > &env)
Definition Shader.hh:601
virtual std::string FragmentGlobals() const
Definition Shader.hh:616
virtual std::string VertexGlobals() const
Definition Shader.hh:603
virtual std::string VertexCodeGen() const
Definition Shader.hh:610
virtual std::string VertexGlobals() const
Definition Shader.hh:571
virtual std::string FragmentCodeGen() const
Definition Shader.hh:584
virtual std::string VertexCodeGen() const
Definition Shader.hh:575
virtual std::string FragmentGlobals() const
Definition Shader.hh:580
virtual std::string FragmentGlobals() const
Definition Shader.hh:554
virtual std::string FragmentCodeGen() const
Definition Shader.hh:558
virtual std::string VertexCodeGen() const
Definition Shader.hh:549
virtual std::string VertexGlobals() const
Definition Shader.hh:545
virtual std::string VertexCodeGen() const
Definition Shader.hh:527
virtual std::string VertexGlobals() const
Definition Shader.hh:523
virtual std::string FragmentGlobals() const
Definition Shader.hh:532
virtual std::string FragmentCodeGen() const
Definition Shader.hh:536
virtual std::string VertexCodeGen() const
Definition Shader.hh:908
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:900
virtual std::string VertexGlobals() const
Definition Shader.hh:904
virtual void Config(const std::vector< int > &env)
Definition Shader.hh:893
virtual std::string FragmentCodeGen() const
Definition Shader.hh:916
FragColorCombinerPiece()
Definition Shader.hh:892
virtual std::string FragmentGlobals() const
Definition Shader.hh:912
FragmentShader(ShaderString &shader)
Definition Shader.hh:208
int Count() const
Definition Shader.hh:210
std::string Name() const
Definition Shader.hh:209
std::string Source(int i) const
Definition Shader.hh:211
void SetParameters(Program &pp) const
Definition Shader.hh:832
GlobalTextureParameters(Point p, Vector x, Vector y, Vector z)
Definition Shader.hh:831
virtual std::string FragmentCodeGen() const
Definition Shader.hh:882
virtual std::string VertexCodeGen() const
Definition Shader.hh:862
virtual std::string VertexGlobals() const
Definition Shader.hh:853
virtual std::string FragmentGlobals() const
Definition Shader.hh:878
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:849
virtual std::string VertexGlobals() const
Definition Shader.hh:352
void Provides(std::vector< int > &vec) const
Definition Shader.hh:343
virtual std::string VertexCodeGen() const
Definition Shader.hh:360
virtual std::string FragmentGlobals() const
Definition Shader.hh:381
virtual std::string FragmentCodeGen() const
Definition Shader.hh:385
GouraudPiece()
Definition Shader.hh:342
LinearInterpolationParameters2(Point startpos, Point endpos)
Definition Shader.hh:1334
void SetParameters(Program &pp) const
Definition Shader.hh:1335
void SetParameters(Program &pp) const
Definition Shader.hh:1314
LinearInterpolationParameters(int startpos_id, int endpos_id, int time_id, Point startpos, Point endpos, float starttime, float endtime, float currenttime)
Definition Shader.hh:1313
Definition Shader.hh:1346
virtual std::string VertexGlobals() const
Definition Shader.hh:1352
virtual std::string FragmentCodeGen() const
Definition Shader.hh:1374
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:1348
virtual std::string FragmentGlobals() const
Definition Shader.hh:1370
virtual std::string VertexCodeGen() const
Definition Shader.hh:1359
Definition VectorTools.hh:279
void SetParameters(Program &p) const
Definition Shader.cc:798
MoveObjectParameters(const PointCollection &coll)
Definition Shader.hh:1160
virtual std::string VertexCodeGen() const
Definition Shader.hh:1138
MoveObjectPiece()
Definition Shader.hh:1128
virtual std::string VertexGlobals() const
Definition Shader.hh:1130
virtual std::string FragmentGlobals() const
Definition Shader.hh:1145
virtual std::string FragmentCodeGen() const
Definition Shader.hh:1149
void set_count(int i)
Definition Shader.hh:1129
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:1123
NormalParameters(Point p, float mix_rate)
Definition Shader.hh:401
virtual void SetParameters(Program &pp) const
Definition Shader.hh:402
virtual std::string FragmentGlobals() const
Definition Shader.hh:433
virtual std::string FragmentCodeGen() const
Definition Shader.hh:437
virtual std::string VertexGlobals() const
Definition Shader.hh:418
virtual std::string VertexCodeGen() const
Definition Shader.hh:425
void Provides(std::vector< int > &vec) const
Definition Shader.hh:414
virtual void SetParameters(Program &p) const
Definition Shader.hh:293
PhongParameters(Point viewer, Point light, Color light_color, Color speccolor)
Definition Shader.hh:292
Point HalfWay(Point viewer, Point light) const
Definition Shader.hh:302
void Provides(std::vector< int > &vec) const
Definition Shader.hh:454
virtual std::string VertexCodeGen() const
Definition Shader.hh:470
virtual void Config(const std::vector< int > &env)
Definition Shader.hh:447
virtual std::string FragmentCodeGen() const
Definition Shader.hh:486
PhongPiece()
Definition Shader.hh:446
virtual std::string VertexGlobals() const
Definition Shader.hh:463
virtual std::string FragmentGlobals() const
Definition Shader.hh:477
void use()
Definition Shader.hh:1264
void config()
Definition Shader.hh:1260
~PieceShader()
Definition Shader.hh:1254
void unuse()
Definition Shader.hh:1291
void set_attribs(ShaderAttributes &p)
Definition Shader.hh:1282
void set_params(ShaderParameters &p)
Definition Shader.hh:1273
void push_back(ShaderPiece *p)
Definition Shader.hh:1255
PieceShader()
Definition Shader.hh:1253
int get_loc(std::string name)
Definition Shader.hh:1292
Definition VectorTools.hh:350
Definition Effect.hh:2456
void clean_map()
Definition Shader.cc:710
void set_var_matrix(const char *name, const std::vector< float > &v)
Definition Shader.cc:658
Attrib find_attr(const std::string &attr_name, int id)
Definition Shader.cc:777
void use()
Definition Shader.cc:331
void print_locs()
Definition Shader.cc:698
void print_log()
Definition Shader.cc:321
void set_var(const char *name, float val)
Definition Shader.cc:358
void set_var_matrix2(const char *name, const std::vector< float > &v, int start)
Definition Shader.cc:630
Matrix get_matrix_var(const std::string &name)
Definition Shader.cc:590
void push_back(const Shader &shader)
Definition Shader.cc:214
Program(const Program &)=delete
ProgramPriv * priv
Definition Shader.hh:117
Program & operator=(const Program &)=delete
Attrib find_attr_int(const std::string &attr_name, int id)
Definition Shader.cc:785
~Program()
Definition Shader.cc:201
void unuse()
Definition Shader.cc:348
std::unordered_map< Low_GLint, int > g_intvar_cache
Definition Shader.hh:121
Program()
Definition Shader.cc:193
void attr_loc(std::string s, int index)
Definition Shader.cc:793
std::unordered_map< Low_GLint, Matrix > cache
Definition Shader.hh:119
void GeomOutputVertices(int i)
Definition Shader.cc:284
std::unordered_map< Low_GLint, float > g_setvar_cache
Definition Shader.hh:120
void bind_attrib(int num, std::string name)
Definition Shader.cc:245
std::unordered_map< uint32_t, int > locs
Definition Shader.hh:118
void link()
Definition Shader.cc:289
void detach(const Shader &shader)
Definition Shader.cc:249
void bind_frag(int num, std::string name)
Definition Shader.cc:239
int get_loc(std::string name)
Definition Shader.cc:485
void GeomTypes(int input, int output)
Definition Shader.cc:258
virtual void SetParameters(Program &p) const
Definition Shader.hh:698
RandomPositionParameters(Point box, float time)
Definition Shader.hh:697
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:666
virtual std::string VertexCodeGen() const
Definition Shader.hh:677
virtual std::string VertexGlobals() const
Definition Shader.hh:671
virtual std::string FragmentGlobals() const
Definition Shader.hh:685
virtual std::string FragmentCodeGen() const
Definition Shader.hh:689
virtual void SetAttribs(Program &p) const =0
Definition GraphI.hh:1981
Definition Shader.hh:1466
ShaderFile()
Definition Shader.cc:5892
std::string GeometryShader(std::string name)
Definition Shader.cc:5981
std::string FragmentShader(std::string name)
Definition Shader.cc:5977
std::string VertexShader(std::string name)
Definition Shader.cc:5973
Definition Shader.hh:1168
virtual std::string VertexShader() const
Definition Shader.hh:1173
virtual std::string FragmentShader() const
Definition Shader.hh:1188
void config()
Definition Shader.hh:1204
ShaderFromPieces()
Definition Shader.hh:1170
std::vector< ShaderPiece * >::iterator iterator
Definition Shader.hh:1171
std::vector< ShaderPiece * >::const_iterator const_iterator
Definition Shader.hh:1172
void push_back(ShaderPiece *p)
Definition Shader.hh:1203
Definition Shader.hh:1392
virtual void SetParameters(Program &p) const =0
virtual std::string Shader() const =0
virtual bool VertexShader() const =0
Definition GraphI.hh:1281
void use()
Definition Shader.hh:270
ShaderPair(ShaderString &shader)
Definition Shader.hh:264
void unuse()
Definition Shader.hh:279
int get_loc(std::string name)
Definition Shader.hh:280
void set_attribs(ShaderAttributes &p)
Definition Shader.hh:275
void set_params(ShaderParameters &p)
Definition Shader.hh:271
virtual void SetParameters(Program &p) const =0
virtual std::string FragmentCodeGen() const =0
virtual std::string FragmentGlobals() const =0
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:334
virtual std::string VertexGlobals() const =0
virtual std::string VertexCodeGen() const =0
virtual void Config(const std::vector< int > &env)
Definition Shader.hh:335
void use(int i)
Definition Shader.cc:6729
ShaderSeq(const ShaderSeq &)=delete
ShaderSeq & operator=(const ShaderSeq &)=delete
void link(int i)
Definition Shader.cc:6722
ShaderSeq(ShaderFile &file)
Definition Shader.hh:1482
void unuse(int i)
Definition Shader.cc:6736
~ShaderSeq()
Definition Shader.hh:1485
Program * prog(int i)
Definition Shader.cc:6743
void print_log(int i)
Definition Shader.cc:6717
int GetShader(std::string v_format, std::string f_format, std::string g_format, std::vector< std::string > v_vec=std::vector< std::string >(), std::vector< std::string > f_vec=std::vector< std::string >(), bool trans=true, ShaderModule *mod=0, ShaderCall *vertex_c=0, ShaderCall *fragment_c=0, std::string v_defines="", std::string f_defines="", std::string v_shader="", std::string f_shader="")
Definition Shader.cc:6583
virtual std::string Source(int i) const =0
virtual int Count() const =0
virtual std::string Name() const =0
virtual std::string VertexMain() const
Definition Shader.hh:167
virtual std::string FragmentShader() const
Definition Shader.hh:163
virtual std::string FragmentGlobals() const
Definition Shader.hh:170
virtual std::string VertexCode() const
Definition Shader.hh:175
virtual std::string FragmentColor() const
Definition Shader.hh:187
virtual std::string VertexDecls() const
Definition Shader.hh:174
virtual std::string FragmentCode() const
Definition Shader.hh:180
virtual std::string FragmentAssigns() const
Definition Shader.hh:181
virtual std::string FragmentMain() const
Definition Shader.hh:171
virtual std::string FragmentDecls() const
Definition Shader.hh:179
virtual std::string VertexAssigns() const
Definition Shader.hh:176
virtual std::string VertexPosition() const
Definition Shader.hh:184
virtual std::string VertexGlobals() const
Definition Shader.hh:166
virtual std::string VertexShader() const
Definition Shader.hh:162
virtual std::string FragmentShader() const =0
virtual std::string VertexShader() const =0
Definition Shader.hh:1242
virtual void set_attribs(ShaderAttributes &p)=0
virtual ~ShaderUse()
Definition Shader.hh:1244
virtual void set_params(ShaderParameters &p)=0
ShaderPriv * priv
Definition Shader.hh:69
Shader(ShaderSpec &spec, bool vertex, bool geom)
Definition Shader.cc:109
void print_log() const
Definition Shader.cc:164
~Shader()
Definition Shader.cc:173
SingletonShaderSpec(std::string s, std::string name)
Definition Shader.hh:52
std::string Name() const
Definition Shader.hh:53
int Count() const
Definition Shader.hh:54
std::string Source(int i) const
Definition Shader.hh:55
std::string Name() const
Definition Shader.hh:139
std::string Source(int i) const
Definition Shader.hh:141
int Count() const
Definition Shader.hh:140
std::string Name() const
Definition Shader.hh:127
int Count() const
Definition Shader.hh:128
std::string Source(int i) const
Definition Shader.hh:129
void SetParameters(Program &p) const
Definition Shader.hh:821
TextureParameters(int textureunit)
Definition Shader.hh:820
virtual std::string VertexGlobals() const
Definition Shader.hh:963
TexturePiece()
Definition Shader.hh:947
virtual std::string FragmentGlobals() const
Definition Shader.hh:974
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:955
virtual std::string FragmentCodeGen() const
Definition Shader.hh:978
virtual std::string VertexCodeGen() const
Definition Shader.hh:967
virtual void Config(const std::vector< int > &env)
Definition Shader.hh:948
Definition Effect.hh:10694
Definition VectorTools.hh:125
float Dist() const
Definition VectorTools.cc:141
Definition Shader.hh:1300
std::string CodeGen() const
Definition Shader.hh:1302
std::string Source(int i) const
Definition Shader.hh:196
std::string Name() const
Definition Shader.hh:194
VertexShader(ShaderString &shader)
Definition Shader.hh:193
int Count() const
Definition Shader.hh:195
WaterAttributes(int xid, int yid, int nx_x, int nx_y, int nx_z, int ny_x, int ny_y, int ny_z)
Definition Shader.hh:1066
void SetAttribs(Program &p) const
Definition Shader.hh:1074
void Attr(std::vector< Attrib > &vector)
Definition Shader.hh:1085
WaterParameters(float time)
Definition Shader.hh:1107
void SetParameters(Program &p) const
Definition Shader.hh:1108
virtual std::string VertexCodeGen() const
Definition Shader.hh:1032
virtual std::string FragmentCodeGen() const
Definition Shader.hh:1058
virtual std::string FragmentGlobals() const
Definition Shader.hh:1054
virtual std::string VertexGlobals() const
Definition Shader.hh:1000
virtual void Provides(std::vector< int > &vec) const
Definition Shader.hh:994
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
Definition Shader.hh:1500
AnimStateI * priv
Definition Shader.hh:1503
~AnimState()
Definition Shader.cc:6814
AnimState(ShaderFile &f)
Definition Shader.cc:6808
bool is_int
Definition Shader.hh:36
int loc
Definition Shader.hh:34
int id
Definition Shader.hh:35
num
Definition view.php:2821