… | |
… | |
881 | void operator ()() const |
881 | void operator ()() const |
882 | { |
882 | { |
883 | shader_builder::cur->code << "("; |
883 | shader_builder::cur->code << "("; |
884 | a (); |
884 | a (); |
885 | shader_builder::cur->code << b; |
885 | shader_builder::cur->code << b; |
886 | c (); |
|
|
887 | shader_builder::cur->code << ")"; |
|
|
888 | } |
|
|
889 | }; |
|
|
890 | |
|
|
891 | template<class A, class B, class C> |
|
|
892 | struct sl_ternary |
|
|
893 | { |
|
|
894 | const A a; const B b; const C c; |
|
|
895 | sl_ternary (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { } |
|
|
896 | void operator ()() const |
|
|
897 | { |
|
|
898 | shader_builder::cur->code << "("; |
|
|
899 | a (); |
|
|
900 | shader_builder::cur->code << ") ? ("; |
|
|
901 | b (); |
|
|
902 | shader_builder::cur->code << ") : ("; |
|
|
903 | c (); |
886 | c (); |
904 | shader_builder::cur->code << ")"; |
887 | shader_builder::cur->code << ")"; |
905 | } |
888 | } |
906 | }; |
889 | }; |
907 | |
890 | |
… | |
… | |
1197 | # undef SHADER_FUNC2_ |
1180 | # undef SHADER_FUNC2_ |
1198 | # undef SHADER_FUNC3 |
1181 | # undef SHADER_FUNC3 |
1199 | # undef SHADER_FUNC3_ |
1182 | # undef SHADER_FUNC3_ |
1200 | # undef SHADER_FUNC4 |
1183 | # undef SHADER_FUNC4 |
1201 | # undef SHADER_FUNC5_ |
1184 | # undef SHADER_FUNC5_ |
|
|
1185 | |
|
|
1186 | template<class A, class B, class C> |
|
|
1187 | struct sl_ternary |
|
|
1188 | { |
|
|
1189 | const A a; const B b; const C c; |
|
|
1190 | sl_ternary (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { } |
|
|
1191 | void operator ()() const |
|
|
1192 | { |
|
|
1193 | shader_builder::cur->code << "("; |
|
|
1194 | a (); |
|
|
1195 | shader_builder::cur->code << ") ? ("; |
|
|
1196 | b (); |
|
|
1197 | shader_builder::cur->code << ") : ("; |
|
|
1198 | c (); |
|
|
1199 | shader_builder::cur->code << ")"; |
|
|
1200 | } |
|
|
1201 | }; |
|
|
1202 | |
|
|
1203 | template<typename A, typename B, typename C> |
|
|
1204 | inline const sl_expr< sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> > |
|
|
1205 | ifelse (const A &a, const B &b, const C &c) |
|
|
1206 | { |
|
|
1207 | return sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> |
|
|
1208 | (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c)); |
|
|
1209 | } |
|
|
1210 | |
1202 | } |
1211 | } |
|
|
1212 | } |
1203 | |
1213 | |
1204 | #if 0 |
|
|
1205 | template<typename A, typename B, typename C> |
|
|
1206 | inline const sl_expr< sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> > |
|
|
1207 | ifelse (const A &a, const B &b, const C &c) |
|
|
1208 | { |
|
|
1209 | return sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> |
|
|
1210 | (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c)); |
|
|
1211 | } |
|
|
1212 | #endif |
1214 | #endif |
1213 | |
1215 | |
1214 | } |
|
|
1215 | |
|
|
1216 | #endif |
|
|
1217 | |
|
|
1218 | #include "shader_vars.h" |
1216 | #include "shader_vars.h" |
1219 | |
1217 | |
1220 | |
1218 | |