зеркало из https://github.com/stride3d/xkslang.git
49 строки
857 B
GLSL
49 строки
857 B
GLSL
#version 330 core
|
|
|
|
// cross-unit recursion
|
|
|
|
void main() {}
|
|
|
|
// two-level recursion
|
|
|
|
float cbar(int);
|
|
|
|
void cfoo(float)
|
|
{
|
|
cbar(2);
|
|
}
|
|
|
|
// four-level, out of order
|
|
|
|
void CB();
|
|
void CD();
|
|
void CA() { CB(); }
|
|
void CC() { CD(); }
|
|
|
|
// high degree
|
|
|
|
void CBT();
|
|
void CDT();
|
|
void CAT() { CBT(); CBT(); CBT(); }
|
|
void CCT() { CDT(); CDT(); CBT(); }
|
|
|
|
// not recursive
|
|
|
|
void norA() {}
|
|
void norB() { norA(); }
|
|
void norC() { norA(); }
|
|
void norD() { norA(); }
|
|
void norE() { norB(); }
|
|
void norF() { norB(); }
|
|
void norG() { norE(); }
|
|
void norH() { norE(); }
|
|
void norI() { norE(); }
|
|
|
|
// not recursive, but with a call leading into a cycle if ignoring direction
|
|
|
|
void norcA() { }
|
|
void norcB() { norcA(); }
|
|
void norcC() { norcB(); }
|
|
void norcD() { norcC(); norcB(); } // head of cycle
|
|
void norcE() { norcD(); } // lead into cycle
|