- switch (r_shadow_shadowmode)
- {
- case R_SHADOW_SHADOWMODE_SHADOWMAP2D:
- r_shadow_shadowmap_parameters[0] = 0.5f * (size - r_shadow_shadowmapborder);
- r_shadow_shadowmap_parameters[2] = r_shadow_shadowmapvsdct ? 2.5f*size : size;
- R_Viewport_InitRectSideView(&viewport, &rsurface.rtlight->matrix_lighttoworld, side, size, r_shadow_shadowmapborder, nearclip, farclip, NULL);
- if (r_shadow_rendermode == R_SHADOW_RENDERMODE_SHADOWMAP2D) goto init_done;
-
- // complex unrolled cube approach (more flexible)
- if (r_shadow_shadowmapvsdct && !r_shadow_shadowmapvsdcttexture)
- R_Shadow_MakeVSDCT();
- if (!r_shadow_shadowmap2dtexture)
- R_Shadow_MakeShadowMap(side, r_shadow_shadowmapmaxsize);
- CHECKGLERROR
- if (r_shadow_shadowmap2dtexture) fbo = r_shadow_fbo2d;
- r_shadow_shadowmap_texturescale[0] = 1.0f / R_TextureWidth(r_shadow_shadowmap2dtexture);
- r_shadow_shadowmap_texturescale[1] = 1.0f / R_TextureHeight(r_shadow_shadowmap2dtexture);
- r_shadow_rendermode = R_SHADOW_RENDERMODE_SHADOWMAP2D;
- break;
- case R_SHADOW_SHADOWMODE_SHADOWMAPRECTANGLE:
- r_shadow_shadowmap_parameters[0] = 0.5f * (size - r_shadow_shadowmapborder);
- r_shadow_shadowmap_parameters[2] = r_shadow_shadowmapvsdct ? 2.5f*size : size;
- R_Viewport_InitRectSideView(&viewport, &rsurface.rtlight->matrix_lighttoworld, side, size, r_shadow_shadowmapborder, nearclip, farclip, NULL);
- if (r_shadow_rendermode == R_SHADOW_RENDERMODE_SHADOWMAPRECTANGLE) goto init_done;
-
- // complex unrolled cube approach (more flexible)
- if (r_shadow_shadowmapvsdct && !r_shadow_shadowmapvsdcttexture)
- R_Shadow_MakeVSDCT();
- if (!r_shadow_shadowmaprectangletexture)
- R_Shadow_MakeShadowMap(side, r_shadow_shadowmapmaxsize);
- CHECKGLERROR
- if(r_shadow_shadowmaprectangletexture) fbo = r_shadow_fborectangle;
- r_shadow_shadowmap_texturescale[0] = 1.0f;
- r_shadow_shadowmap_texturescale[1] = 1.0f;
- r_shadow_rendermode = R_SHADOW_RENDERMODE_SHADOWMAPRECTANGLE;
- break;
- case R_SHADOW_SHADOWMODE_SHADOWMAPCUBESIDE:
- r_shadow_shadowmap_parameters[0] = 1.0f;
- r_shadow_shadowmap_parameters[2] = 1.0f;
- R_Viewport_InitCubeSideView(&viewport, &rsurface.rtlight->matrix_lighttoworld, side, size, nearclip, farclip, NULL);
- if (r_shadow_rendermode == R_SHADOW_RENDERMODE_SHADOWMAPCUBESIDE) goto init_done;
-
- // simple cube approach
- if (!r_shadow_shadowmapcubetexture[r_shadow_shadowmaplod])
- R_Shadow_MakeShadowMap(side, size);
- CHECKGLERROR
- if (r_shadow_shadowmapcubetexture[r_shadow_shadowmaplod]) fbo = r_shadow_fbocubeside[r_shadow_shadowmaplod];
- r_shadow_shadowmap_texturescale[0] = 0.0f;
- r_shadow_shadowmap_texturescale[1] = 0.0f;
- r_shadow_rendermode = R_SHADOW_RENDERMODE_SHADOWMAPCUBESIDE;
- break;
- default:
- break;
- }