| 628 | float skyfloor = 1e16f; |
| 629 | |
| 630 | void draw_envbox(int w) |
| 631 | { |
| 632 | extern float skyfloor; |
| 633 | |
| 634 | float zclip = skyclip && skyfloor >= camera1->o.z ? 0.5f + float(skyfloor-camera1->o.z)/w : 0.0f, |
| 635 | vclip = 1-zclip, |
| 636 | z = 2*w*(vclip-0.5f); |
| 637 | |
| 638 | if(vclip < 0) return; |
| 639 | |
| 640 | glDepthMask(GL_FALSE); |
| 641 | |
| 642 | draw_envbox_face(0.0f, 0.0f, -w, -w, -w, |
| 643 | 1.0f, 0.0f, -w, w, -w, |
| 644 | 1.0f, vclip, -w, w, z, |
| 645 | 0.0f, vclip, -w, -w, z, sky[0] ? sky[0] : notexture); |
| 646 | |
| 647 | draw_envbox_face(1.0f, vclip, +w, -w, z, |
| 648 | 0.0f, vclip, +w, w, z, |
| 649 | 0.0f, 0.0f, +w, w, -w, |
| 650 | 1.0f, 0.0f, +w, -w, -w, sky[1] ? sky[1] : notexture); |
| 651 | |
| 652 | draw_envbox_face(1.0f, vclip, -w, -w, z, |
| 653 | 0.0f, vclip, w, -w, z, |
| 654 | 0.0f, 0.0f, w, -w, -w, |
| 655 | 1.0f, 0.0f, -w, -w, -w, sky[2] ? sky[2] : notexture); |
| 656 | |
| 657 | draw_envbox_face(1.0f, vclip, +w, w, z, |
| 658 | 0.0f, vclip, -w, w, z, |
| 659 | 0.0f, 0.0f, -w, w, -w, |
| 660 | 1.0f, 0.0f, +w, w, -w, sky[3] ? sky[3] : notexture); |
| 661 | |
| 662 | if(!zclip) |
| 663 | draw_envbox_face(0.0f, 1.0f, -w, w, w, |
| 664 | 0.0f, 0.0f, +w, w, w, |
| 665 | 1.0f, 0.0f, +w, -w, w, |
| 666 | 1.0f, 1.0f, -w, -w, w, sky[4] ? sky[4] : notexture); |
| 667 | |
| 668 | draw_envbox_face(0.0f, 1.0f, +w, w, -w, |
| 669 | 0.0f, 0.0f, -w, w, -w, |
| 670 | 1.0f, 0.0f, -w, -w, -w, |
| 671 | 1.0f, 1.0f, +w, -w, -w, sky[5] ? sky[5] : notexture); |
| 672 | |
| 673 | glDepthMask(GL_TRUE); |
| 674 | |
| 675 | skyfloor = 1e16f; |
| 676 | } |
| 677 | |
| 678 | struct tmufunc |
| 679 | { |
no test coverage detected