+ FSNode *node = cur_node->children[i];
+
+ if(node->type != FSTYPE_DIR) {
+ continue;
+ }
+
+ float angle = (float)col++ / (float)(num_dirs - 1) * max_icon_angle - max_icon_angle * 0.5;
+
+ Mat4 xform;
+ xform.rotate_y(angle);
+ xform.translate(0, -0.3, 0);
+
+ glPushMatrix();
+ glMultMatrixf(xform[0]);
+ glDepthMask(0);
+
+ set_uniform_float(glow_link_sdr, "phase", col * 42.0);
+
+ glBegin(GL_QUADS);
+ glColor3f(0.2, 0.3, 0.8);
+ glTexCoord2f(0, 0);
+ glVertex3f(-0.2, 0, 0.05);
+ glTexCoord2f(1, 0);
+ glVertex3f(0.2, 0, 0.05);
+ glTexCoord2f(1, 1);
+ glVertex3f(0.2, 0, -5.0);
+ glTexCoord2f(0, 1);
+ glVertex3f(-0.2, 0, -5.0);
+ glColor3f(1, 1, 1);
+ glEnd();
+ glPopMatrix();
+
+ glDepthMask(1);
+ }
+
+ // draw the directory labels
+ glUseProgram(glow_font_sdr);
+ col = 0;
+ for(int i=0; i<nchildren; i++) {
+ FSNode *node = cur_node->children[i];
+
+ if(node->type != FSTYPE_DIR) {
+ continue;
+ }
+
+ float angle = (float)col++ / (float)(num_dirs - 1) * max_icon_angle - max_icon_angle * 0.5;
+
+ draw_node_name(node, angle, -0.3, radius, false);
+ }
+
+ // then draw file icons
+ glDisable(GL_BLEND);
+ glUseProgram(0);
+ col = 0;
+ for(int i=0; i<nchildren; i++) {