… | |
… | |
1181 | # undef SHADER_FUNC3_ |
1181 | # undef SHADER_FUNC3_ |
1182 | # undef SHADER_FUNC4 |
1182 | # undef SHADER_FUNC4 |
1183 | # undef SHADER_FUNC5_ |
1183 | # undef SHADER_FUNC5_ |
1184 | |
1184 | |
1185 | template<class A, class B, class C> |
1185 | template<class A, class B, class C> |
1186 | struct sl_ternary |
1186 | struct sl_ifelse |
1187 | { |
1187 | { |
1188 | const A a; const B b; const C c; |
1188 | const A a; const B b; const C c; |
1189 | sl_ternary (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { } |
1189 | sl_ifelse (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { } |
1190 | void operator ()() const |
1190 | void operator ()() const |
1191 | { |
1191 | { |
1192 | shader_builder::cur->code << "("; |
1192 | shader_builder::cur->code << "("; |
1193 | a (); |
1193 | a (); |
1194 | shader_builder::cur->code << ") ? ("; |
1194 | shader_builder::cur->code << ") ? ("; |
… | |
… | |
1198 | shader_builder::cur->code << ")"; |
1198 | shader_builder::cur->code << ")"; |
1199 | } |
1199 | } |
1200 | }; |
1200 | }; |
1201 | |
1201 | |
1202 | template<typename A, typename B, typename C> |
1202 | template<typename A, typename B, typename C> |
1203 | inline const sl_expr< sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> > |
1203 | inline const sl_expr< sl_ifelse<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> > |
1204 | ifelse (const A &a, const B &b, const C &c) |
1204 | ifelse (const A &a, const B &b, const C &c) |
1205 | { |
1205 | { |
1206 | return sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> |
1206 | return sl_ifelse<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> |
1207 | (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c)); |
1207 | (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c)); |
1208 | } |
1208 | } |
1209 | |
1209 | |
1210 | } |
1210 | } |
1211 | } |
1211 | } |