Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. static void update_scissor_test(){
  2.     if (scissor_test_state){
  3.         scissor_test_vertices[0].position.x = ((2.0f * region.x) / 960.0f) - 1.0f;
  4.         scissor_test_vertices[0].position.y = ((2.0f * region.y) / 544.0f) - 1.0f;
  5.         scissor_test_vertices[1].position.x = ((2.0f * (region.x + region.w)) / 960.0f) - 1.0f;
  6.         scissor_test_vertices[1].position.y = ((2.0f * region.y) / 544.0f) - 1.0f;
  7.         scissor_test_vertices[2].position.x = ((2.0f * region.x) / 960.0f) - 1.0f;
  8.         scissor_test_vertices[2].position.y = ((2.0f * (region.y + region.h)) / 960.0f) - 1.0f;
  9.         scissor_test_vertices[3].position.x = ((2.0f * (region.x + region.w)) / 960.0f) - 1.0f;
  10.         scissor_test_vertices[3].position.y = ((2.0f * (region.y + region.h)) / 960.0f) - 1.0f;
  11.     }else{
  12.         scissor_test_vertices[0].position = (vector2f){-1.0f, -1.0f};
  13.         scissor_test_vertices[1].position = (vector2f){ 1.0f, -1.0f};
  14.         scissor_test_vertices[2].position = (vector2f){-1.0f,  1.0f};
  15.         scissor_test_vertices[3].position = (vector2f){ 1.0f,  1.0f};
  16.     }
  17.     sceGxmSetVertexProgram(gxm_context, clear_vertex_program_patched);
  18.     sceGxmSetFragmentProgram(gxm_context, scissor_test_fragment_program);
  19.    
  20.     invalidate_depth_test();
  21.     change_depth_write(SCE_GXM_DEPTH_WRITE_ENABLED);
  22.        
  23.     sceGxmSetFrontStencilFunc(gxm_context,
  24.         SCE_GXM_STENCIL_FUNC_NEVER,
  25.         SCE_GXM_STENCIL_OP_KEEP,
  26.         SCE_GXM_STENCIL_OP_KEEP,
  27.         SCE_GXM_STENCIL_OP_KEEP,
  28.         0, 0);
  29.     sceGxmSetBackStencilFunc(gxm_context,
  30.         SCE_GXM_STENCIL_FUNC_NEVER,
  31.         SCE_GXM_STENCIL_OP_KEEP,
  32.         SCE_GXM_STENCIL_OP_KEEP,
  33.         SCE_GXM_STENCIL_OP_KEEP,
  34.         0, 0);
  35.    
  36.     sceGxmSetVertexStream(gxm_context, 0, clear_vertices);
  37.     sceGxmDraw(gxm_context, SCE_GXM_PRIMITIVE_TRIANGLE_FAN, SCE_GXM_INDEX_FORMAT_U16, clear_indices, 4);
  38.    
  39.     sceGxmSetFrontStencilFunc(gxm_context,
  40.         SCE_GXM_STENCIL_FUNC_ALWAYS,
  41.         SCE_GXM_STENCIL_OP_KEEP,
  42.         SCE_GXM_STENCIL_OP_KEEP,
  43.         SCE_GXM_STENCIL_OP_KEEP,
  44.         0, 0);
  45.     sceGxmSetBackStencilFunc(gxm_context,
  46.         SCE_GXM_STENCIL_FUNC_ALWAYS,
  47.         SCE_GXM_STENCIL_OP_KEEP,
  48.         SCE_GXM_STENCIL_OP_KEEP,
  49.         SCE_GXM_STENCIL_OP_KEEP,
  50.         0, 0);
  51.    
  52.     sceGxmSetVertexStream(gxm_context, 0, scissor_test_vertices);
  53.     sceGxmDraw(gxm_context, SCE_GXM_PRIMITIVE_TRIANGLE_FAN, SCE_GXM_INDEX_FORMAT_U16, clear_indices, 4);
  54.    
  55.     validate_depth_test();
  56.     change_depth_write(depth_mask_state && depth_test_state ? SCE_GXM_DEPTH_WRITE_ENABLED : SCE_GXM_DEPTH_WRITE_DISABLED);
  57.    
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement