| 1908 | } |
| 1909 | |
| 1910 | void Viewer::drawScene( FramebufferData* framebuffer ) |
| 1911 | { |
| 1912 | MR_TIMER; |
| 1913 | if ( alphaSortEnabled_ ) |
| 1914 | alphaSorter_->clearTransparencyTextures(); |
| 1915 | |
| 1916 | int numTransparent = 0; |
| 1917 | for ( auto& viewport : viewport_list ) |
| 1918 | viewport.preDraw(); |
| 1919 | |
| 1920 | signals_->preDrawPostViewportSignal(); |
| 1921 | |
| 1922 | bool depthPeeling = isDepthPeelingEnabled(); |
| 1923 | |
| 1924 | for ( const auto& viewport : viewport_list ) |
| 1925 | { |
| 1926 | viewport.recursiveDraw( SceneRoot::get(), DepthFunction::Default, AffineXf3f(), RenderModelPassMask::Opaque, alphaSortEnabled_ ); |
| 1927 | viewport.recursiveDraw( SceneRoot::get(), DepthFunction::Default, AffineXf3f(), RenderModelPassMask::VolumeRendering, alphaSortEnabled_ ); |
| 1928 | if ( !depthPeeling ) |
| 1929 | viewport.recursiveDraw( SceneRoot::get(), DepthFunction::Default, AffineXf3f(), RenderModelPassMask::Transparent, alphaSortEnabled_, &numTransparent ); |
| 1930 | } |
| 1931 | |
| 1932 | bool depthPeelerPostDrawNeeded = false; |
| 1933 | if ( depthPeeling ) |
| 1934 | { |
| 1935 | depthPeelerPostDrawNeeded = depthPeeler_->doPasses( framebuffer ); |
| 1936 | } |
| 1937 | |
| 1938 | signals_->drawSignal(); |
| 1939 | |
| 1940 | if ( depthPeelerPostDrawNeeded ) |
| 1941 | { |
| 1942 | depthPeeler_->draw(); |
| 1943 | } |
| 1944 | |
| 1945 | if ( numTransparent > 0 && alphaSortEnabled_ ) |
| 1946 | { |
| 1947 | alphaSorter_->drawTransparencyTextureToScreen(); |
| 1948 | alphaSorter_->clearTransparencyTextures(); |
| 1949 | } |
| 1950 | // draw after alpha texture |
| 1951 | for ( const auto& viewport : viewport_list ) |
| 1952 | viewport.recursiveDraw( SceneRoot::get(), DepthFunction::Default, AffineXf3f(), RenderModelPassMask::NoDepthTest, alphaSortEnabled_ ); |
| 1953 | |
| 1954 | signals_->postDrawPreViewportSignal(); |
| 1955 | |
| 1956 | for ( const auto& viewport : viewport_list ) |
| 1957 | viewport.postDraw(); |
| 1958 | |
| 1959 | resetRedraw_(); |
| 1960 | } |
| 1961 | |
| 1962 | void Viewer::setupScene() |
| 1963 | { |
nothing calls this directly
no test coverage detected