Commit d68d9abdb83792e81017f2c960a06cd8ce82a0cd
1 parent
280e1b5a
Combine StencilMode and WriteToColorBuffer to RenderMode
Change-Id: I423fa10241eaf3a617f47490aa5484ed54c68594
Showing
1 changed file
with
9 additions
and
17 deletions
examples/renderer-stencil/renderer-stencil-example.cpp
| ... | ... | @@ -275,13 +275,10 @@ private: |
| 275 | 275 | renderer.SetTextures( textureSet ); |
| 276 | 276 | |
| 277 | 277 | // Setup the renderer properties: |
| 278 | - // We are writing to the color buffer & culling back faces. | |
| 279 | - renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true ); | |
| 278 | + // We are writing to the color buffer & culling back faces (no stencil is used for the main cube). | |
| 279 | + renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR ); | |
| 280 | 280 | renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); |
| 281 | 281 | |
| 282 | - // No stencil is used for the main cube. | |
| 283 | - renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::OFF ); | |
| 284 | - | |
| 285 | 282 | // We do need to write to the depth buffer as other objects need to appear underneath this cube. |
| 286 | 283 | renderer.SetProperty( Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::ON ); |
| 287 | 284 | // We do not need to test the depth buffer as we are culling the back faces. |
| ... | ... | @@ -316,13 +313,10 @@ private: |
| 316 | 313 | renderer.SetTextures( planeTextureSet ); |
| 317 | 314 | |
| 318 | 315 | // Setup the renderer properties: |
| 319 | - // We are writing to the color buffer & culling back faces (as we are NOT doing depth write). | |
| 320 | - renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true ); | |
| 316 | + // We are writing to the color buffer & culling back faces as we are NOT doing depth write (no stencil is used for the floor). | |
| 317 | + renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR ); | |
| 321 | 318 | renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); |
| 322 | 319 | |
| 323 | - // No stencil is used for the floor. | |
| 324 | - renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::OFF ); | |
| 325 | - | |
| 326 | 320 | // We do not write to the depth buffer as its not needed. |
| 327 | 321 | renderer.SetProperty( Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::OFF ); |
| 328 | 322 | // We do need to test the depth buffer as we need the floor to be underneath the cube. |
| ... | ... | @@ -360,11 +354,9 @@ private: |
| 360 | 354 | Renderer renderer = CreateRenderer( planeGeometry, size, false, Vector4::ONE ); |
| 361 | 355 | |
| 362 | 356 | // Setup the renderer properties: |
| 363 | - // The stencil plane is only for stencilling, so disable writing to color buffer. | |
| 364 | - renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, false ); | |
| 357 | + // The stencil plane is only for stencilling. | |
| 358 | + renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::STENCIL ); | |
| 365 | 359 | |
| 366 | - // Enable stencil. Draw to the stencil buffer (only). | |
| 367 | - renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::ON ); | |
| 368 | 360 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION, StencilFunction::ALWAYS ); |
| 369 | 361 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_REFERENCE, 1 ); |
| 370 | 362 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_MASK, 0xFF ); |
| ... | ... | @@ -410,8 +402,9 @@ private: |
| 410 | 402 | renderer.SetTextures( textureSet ); |
| 411 | 403 | |
| 412 | 404 | // Setup the renderer properties: |
| 413 | - // Write to color buffer so reflection is visible | |
| 414 | - renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true ); | |
| 405 | + // Write to color buffer so reflection is visible. | |
| 406 | + // Also enable the stencil buffer, as we will be testing against it to only draw to areas within the stencil. | |
| 407 | + renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR_STENCIL ); | |
| 415 | 408 | // We cull to skip drawing the back faces. |
| 416 | 409 | renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); |
| 417 | 410 | |
| ... | ... | @@ -422,7 +415,6 @@ private: |
| 422 | 415 | renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE ); |
| 423 | 416 | |
| 424 | 417 | // Enable stencil. Here we only draw to areas within the stencil. |
| 425 | - renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::ON ); | |
| 426 | 418 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION, StencilFunction::EQUAL ); |
| 427 | 419 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_REFERENCE, 1 ); |
| 428 | 420 | renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_MASK, 0xff ); | ... | ... |