Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void update_scissor_test(){
- if (scissor_test_state){
- scissor_test_vertices[0].position.x = ((2.0f * region.x) / 960.0f) - 1.0f;
- scissor_test_vertices[0].position.y = ((2.0f * region.y) / 544.0f) - 1.0f;
- scissor_test_vertices[1].position.x = ((2.0f * (region.x + region.w)) / 960.0f) - 1.0f;
- scissor_test_vertices[1].position.y = ((2.0f * region.y) / 544.0f) - 1.0f;
- scissor_test_vertices[2].position.x = ((2.0f * region.x) / 960.0f) - 1.0f;
- scissor_test_vertices[2].position.y = ((2.0f * (region.y + region.h)) / 960.0f) - 1.0f;
- scissor_test_vertices[3].position.x = ((2.0f * (region.x + region.w)) / 960.0f) - 1.0f;
- scissor_test_vertices[3].position.y = ((2.0f * (region.y + region.h)) / 960.0f) - 1.0f;
- }else{
- scissor_test_vertices[0].position = (vector2f){-1.0f, -1.0f};
- scissor_test_vertices[1].position = (vector2f){ 1.0f, -1.0f};
- scissor_test_vertices[2].position = (vector2f){-1.0f, 1.0f};
- scissor_test_vertices[3].position = (vector2f){ 1.0f, 1.0f};
- }
- sceGxmSetVertexProgram(gxm_context, clear_vertex_program_patched);
- sceGxmSetFragmentProgram(gxm_context, scissor_test_fragment_program);
- invalidate_depth_test();
- change_depth_write(SCE_GXM_DEPTH_WRITE_ENABLED);
- sceGxmSetFrontStencilFunc(gxm_context,
- SCE_GXM_STENCIL_FUNC_NEVER,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- 0, 0);
- sceGxmSetBackStencilFunc(gxm_context,
- SCE_GXM_STENCIL_FUNC_NEVER,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- 0, 0);
- sceGxmSetVertexStream(gxm_context, 0, clear_vertices);
- sceGxmDraw(gxm_context, SCE_GXM_PRIMITIVE_TRIANGLE_FAN, SCE_GXM_INDEX_FORMAT_U16, clear_indices, 4);
- sceGxmSetFrontStencilFunc(gxm_context,
- SCE_GXM_STENCIL_FUNC_ALWAYS,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- 0, 0);
- sceGxmSetBackStencilFunc(gxm_context,
- SCE_GXM_STENCIL_FUNC_ALWAYS,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- SCE_GXM_STENCIL_OP_KEEP,
- 0, 0);
- sceGxmSetVertexStream(gxm_context, 0, scissor_test_vertices);
- sceGxmDraw(gxm_context, SCE_GXM_PRIMITIVE_TRIANGLE_FAN, SCE_GXM_INDEX_FORMAT_U16, clear_indices, 4);
- validate_depth_test();
- change_depth_write(depth_mask_state && depth_test_state ? SCE_GXM_DEPTH_WRITE_ENABLED : SCE_GXM_DEPTH_WRITE_DISABLED);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement