Many fixes to SSAO, should be good now.

This commit is contained in:
Juan Linietsky
2017-10-22 13:52:31 -03:00
parent 58b849800e
commit b4f0f59d9f
12 changed files with 212 additions and 44 deletions

View File

@@ -227,6 +227,27 @@ class CommandQueueMT {
virtual void call() { (instance->*method)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
};
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12>
struct Command12 : public CommandBase {
T *instance;
M method;
typename GetSimpleTypeT<P1>::type_t p1;
typename GetSimpleTypeT<P2>::type_t p2;
typename GetSimpleTypeT<P3>::type_t p3;
typename GetSimpleTypeT<P4>::type_t p4;
typename GetSimpleTypeT<P5>::type_t p5;
typename GetSimpleTypeT<P6>::type_t p6;
typename GetSimpleTypeT<P7>::type_t p7;
typename GetSimpleTypeT<P8>::type_t p8;
typename GetSimpleTypeT<P9>::type_t p9;
typename GetSimpleTypeT<P10>::type_t p10;
typename GetSimpleTypeT<P11>::type_t p11;
typename GetSimpleTypeT<P12>::type_t p12;
virtual void call() { (instance->*method)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
};
/* comands that return */
template <class T, class M, class R>
@@ -906,6 +927,31 @@ public:
if (sync) sync->post();
}
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12>
void push(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) {
Command12<T, M, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> *cmd = allocate_and_lock<Command12<T, M, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> >();
cmd->instance = p_instance;
cmd->method = p_method;
cmd->p1 = p1;
cmd->p2 = p2;
cmd->p3 = p3;
cmd->p4 = p4;
cmd->p5 = p5;
cmd->p6 = p6;
cmd->p7 = p7;
cmd->p8 = p8;
cmd->p9 = p9;
cmd->p10 = p10;
cmd->p11 = p11;
cmd->p12 = p12;
unlock();
if (sync) sync->post();
}
/*** PUSH AND RET COMMANDS ***/
template <class T, class M, class R>