More actions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{#seo: | {{#seo: | ||
|title=Vita Homebrew PC Tools (Developments) - GameBrew! | |title=Vita Homebrew PC Tools (Developments) - GameBrew! | ||
Line 16: | Line 15: | ||
|license=LGPL-3.0 | |license=LGPL-3.0 | ||
|download=https://dlhb.gamebrew.org/vitahomebrews/pigsinablanketvita.7z | |download=https://dlhb.gamebrew.org/vitahomebrews/pigsinablanketvita.7z | ||
|website= | |website=https://forum.devchroma.nl/index.php/topic,308.0.html | ||
|source=https://github.com/SonicMastr/Pigs-In-A-Blanket | |source=https://github.com/SonicMastr/Pigs-In-A-Blanket | ||
}} | }} | ||
A Piglet/ShaccCg Wrapper Library for OpenGL ES 2.0 Support on the Vita | A Piglet/ShaccCg Wrapper Library for OpenGL ES 2.0 Support on the Vita. Now with System App and Experimental MSAAx4 Support! | ||
'''Note: Development Halted - Superceded by [[Pvr Psp2 Vita|PVR_PSP2]]'''. | |||
== What is Pigs in a Blanket? == | |||
This library is a developer focused wrapper which provides easy initialization and expandability, with some quality of life features, including supporting resolutions up to 1920x1080 native on the Playstion TV, and on the Vita with Sharpscale. Developers can choose make their applications with one resolution in mind, as all long as the code is made to scale by dimension, PIB will handle the rest with it's companion app, the [[Pib Configuration Tool Vita|PIB Configuration Tool]] Pigs in a Blanket Configuration Tool], which allows the user to specify their own preference of resultion that will automatically override the original settings. For more information aobut Piglet, you can check out our information about it on our [https://forum.devchroma.nl/index.php/topic,294.msg902.html#msg902 forum post]. | |||
It library doubles as the heart of Piglet's Shader compiling abilities, removed in the standalone module. I spent the time to rewrite the shader compiler code according to PSM specifications to re-enable the ShaccCg support that was removed. This includes proper return codes and regular log output, so you never have to wonder what's going on with your shaders. Piglet '''DOES NOT''' support GLSL shaders though, so you'll need to convert the shaders to CG. Check the resources at the end of this README for converting your shaders. | |||
== | This library also support EGL 1.5 <code>eglGetProcAddress</code> functionality using the <code>PIB_GET_PROC_ADDR_CORE</code> flag, as the orignal Piglet only returns extensions per EGL 1.4 standard. Thanks to dots-tb we were able to create a simple patch to support returning GLES functions as well. | ||
'''(v.1. | |||
=== Custom Extension Support === | |||
This library will allow us to add extensions using native functions as we feel fit. We'll accept the requests of any developers who have ideas of what extensions to add utilizing PIB, and they will all be able to be accessed via <code>eglGetProcAddress</code>. | |||
== Supported Extensions == | |||
{| | |||
!align="center"| GL | |||
!align="center"| EGL | |||
|- | |||
|align="center"| GL_EXT_draw_instanced | |||
|align="center"| EGL_SCE_piglet_sync | |||
|- | |||
|align="center"| GL_EXT_instanced_arrays | |||
|align="center"| EGL_SCE_piglet_vita_pre_swap_callback | |||
|- | |||
|align="center"| GL_SCE_piglet_shader_binary | |||
|align="center"| EGL_SCE_piglet_vita_vsync_callback | |||
|- | |||
|align="center"| GL_SCE_texture_resource | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_texture_npot | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_rgb8_rgba8 | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_depth_texture | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_format_BGRA8888 | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_read_format_bgra | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_texture_half_float | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_texture_half_float_linear | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_vertex_half_float | |||
|align="center"| | |||
|- | |||
|align="center"| GL_OES_element_index_uint | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_compression_dxt1 | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_compression_dxt3 | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_compression_dxt5 | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_compression_s3tc | |||
|align="center"| | |||
|- | |||
|align="center"| GL_EXT_texture_storage | |||
|align="center"| | |||
|- | |||
|align="center"| GL_IMG_texture_compression_pvrtc | |||
|align="center"| | |||
|} | |||
==Screenshot== | |||
[[image:pigsinablanketvita.jpg|600px]] | |||
== Compiling == | |||
===With VDSuite === | |||
* Install [[Vita Development Suite Vita|VDSuite]] | |||
* Install [[Taihen By Cuevavirus Vita|Taihen]] | |||
* Run <code>cmake . -Bbuild -G Ninja</code> (Recommend Ninja) | |||
* <code>cd build</code> and <code>ninja install</code> | |||
* Link libpib.a in your projects | |||
=== With VitaSDK === | |||
* Install [https://vitasdk.org/ VitaSDK] | |||
* Run <code>vdpm taihen</code> to install <code>libtaihen_stub</code> | |||
* Run <code>make -j4 install USE_VITASDK=1</code> | |||
* Link libpib.a in your projects | |||
Note when building your projects: | |||
'''ALWAYS COMPILE YOUR PROJECTS WITH UNSAFE'''. Doing otherwise will result in PIB failing. | |||
With VitaSDK you can specify the SceLibc heap size by defining <code>sceLibcHeapSize</code> in your code: | |||
<pre>unsigned int sceLibcHeapSize = 2 * 1024 * 1024;</pre> | |||
Piglet needs an SceLibc heap size of at least 2MB to intialize. Without it, the module will fail to start. This heap needs to be larger if using <code>-nostdlib</code> as this becomes your main heap. More info on <code>-nostdlib</code> support in the headers. | |||
You'll need to link your program with: | |||
* libpib.a | |||
* liblibScePiglet_stub.a | |||
* libSceShaccCg_stub.a | |||
* libtaihen_stub.a | |||
* libSceAppMgr_stub.a | |||
For DolceSDK, you'll also need: | |||
* libSceSharedFb_stub.a | |||
* libSceGxmInternalForVsh_stub.a | |||
* libSceGxmInternal_stub.a | |||
=== Check the "Samples" folder for examples of how to use PIB to initialize OpenGLES 2.0 with EGL or GLFW. === | |||
Yes. We have a GLFW3 port for the vita. You can use it by simply including it in your project as normal or build it here: [[Glfw Vita]].<br /> | |||
Note: Button mapping is perfect and there's full touchscreen support. | |||
To install Piglet on your Vita, just use the [[Pib Configuration Tool Vita|Pigs in a Blanket Configuration Tool]]. | |||
Documentation Provided in the Headers. I'm clean. | |||
== Special Thanks == | |||
* '''[https://github.com/GrapheneCt GrapheneCt]''' - Finding the Piglet Module and being a main part of the Project in reverse engineering and testing | |||
* '''[https://github.com/dots-tb dots-tb]''' - Initial idea of using PSM and efforts in getting all of the names for Piglet, as well as being a main part of the Project in reverse engineering and testing | |||
* '''[https://github.com/cuevavirus cuevavirus]''' - Help with debugging and sense of direction | |||
* '''[https://github.com/CreepNT CreepNT]''' - Help with debugging | |||
* '''[https://github.com/Princess-of-Sleeping Princess-of-Sleeping]''' - Dump tool and PrincessLog | |||
* '''[https://github.com/xyzz xyzz]''' - Initial deep dive into how ShaccCg works | |||
* '''[https://github.com/Zer0xFF Zer0xFF] and [https://github.com/masterzorag masterzorag]''' - Their amazing work on the PS4 Piglet reverse engineering | |||
== GLSL to CG Conversion Resources == | |||
*Microsoft GLSL to HLSL: https://docs.microsoft.com/en-us/windows/uwp/gaming/glsl-to-hlsl-reference | |||
*Nvidia CG Standard Library: http://developer.download.nvidia.com/cg/index_stdlib.html | |||
*Nvidia CG GLSL Vert to CG: http://developer.download.nvidia.com/cg/glslv.html | |||
*Nvidia CG GLSL Frag to CG: http://developer.download.nvidia.com/cg/glslf.html | |||
This requires both libshacccg.suprx and libScePiglet.suprx to be located in ur0:data/external | |||
==Changelog== | |||
'''(v.2.0)''' | |||
*What's new? | |||
**System Application Support | |||
**Fully Enabled Sony EGL Extensions (Common Dialog Support) | |||
**MSAA x4 Support | |||
*Bugfixes | |||
**Fixed incorrect usage of EGL 1.5's eglGetProcAddresss. Using EGL 1.5 features now has to be manually enabled using the PIB_GET_PROC_ADDR_CORE flag | |||
**Fixed glGetBooleanv always returning GL_FALSE when using GL_SHADER_COMPILER as the symbolic constant and ShaccCg is enabled | |||
**Fixed eglSwapInterval would always be locked to 1 no matter what value was entered | |||
**Fixed Libc and FIOS2 always attempting to be started no matter what | |||
**Fixed ability to double initialize/terminate | |||
'''(v.1.1)''' | |||
* First Release. | * First Release. | ||
== External links == | == External links == | ||
* Official Website - | * Official Website - https://forum.devchroma.nl/index.php/topic,308.0.html | ||
* Github - https://github.com/SonicMastr/Pigs-In-A-Blanket | * Github - https://github.com/SonicMastr/Pigs-In-A-Blanket | ||
Revision as of 02:15, 30 November 2022
Pigs in a Blanket | |
---|---|
File:Pigsinablanketvita.jpg | |
General | |
Author | SonicMastr |
Type | Developments |
Version | 2 |
License | LGPL-3.0 |
Last Updated | 2020/12/09 |
Links | |
Download | |
Website | |
Source | |
A Piglet/ShaccCg Wrapper Library for OpenGL ES 2.0 Support on the Vita. Now with System App and Experimental MSAAx4 Support!
Note: Development Halted - Superceded by PVR_PSP2.
What is Pigs in a Blanket?
This library is a developer focused wrapper which provides easy initialization and expandability, with some quality of life features, including supporting resolutions up to 1920x1080 native on the Playstion TV, and on the Vita with Sharpscale. Developers can choose make their applications with one resolution in mind, as all long as the code is made to scale by dimension, PIB will handle the rest with it's companion app, the PIB Configuration Tool Pigs in a Blanket Configuration Tool], which allows the user to specify their own preference of resultion that will automatically override the original settings. For more information aobut Piglet, you can check out our information about it on our forum post.
It library doubles as the heart of Piglet's Shader compiling abilities, removed in the standalone module. I spent the time to rewrite the shader compiler code according to PSM specifications to re-enable the ShaccCg support that was removed. This includes proper return codes and regular log output, so you never have to wonder what's going on with your shaders. Piglet DOES NOT support GLSL shaders though, so you'll need to convert the shaders to CG. Check the resources at the end of this README for converting your shaders.
This library also support EGL 1.5 eglGetProcAddress
functionality using the PIB_GET_PROC_ADDR_CORE
flag, as the orignal Piglet only returns extensions per EGL 1.4 standard. Thanks to dots-tb we were able to create a simple patch to support returning GLES functions as well.
Custom Extension Support
This library will allow us to add extensions using native functions as we feel fit. We'll accept the requests of any developers who have ideas of what extensions to add utilizing PIB, and they will all be able to be accessed via eglGetProcAddress
.
Supported Extensions
GL | EGL |
---|---|
GL_EXT_draw_instanced | EGL_SCE_piglet_sync |
GL_EXT_instanced_arrays | EGL_SCE_piglet_vita_pre_swap_callback |
GL_SCE_piglet_shader_binary | EGL_SCE_piglet_vita_vsync_callback |
GL_SCE_texture_resource | |
GL_OES_texture_npot | |
GL_OES_rgb8_rgba8 | |
GL_OES_depth_texture | |
GL_EXT_texture_format_BGRA8888 | |
GL_EXT_read_format_bgra | |
GL_OES_texture_half_float | |
GL_OES_texture_half_float_linear | |
GL_OES_vertex_half_float | |
GL_OES_element_index_uint | |
GL_EXT_texture_compression_dxt1 | |
GL_EXT_texture_compression_dxt3 | |
GL_EXT_texture_compression_dxt5 | |
GL_EXT_texture_compression_s3tc | |
GL_EXT_texture_storage | |
GL_IMG_texture_compression_pvrtc |
Screenshot
Compiling
With VDSuite
- Install VDSuite
- Install Taihen
- Run
cmake . -Bbuild -G Ninja
(Recommend Ninja) cd build
andninja install
- Link libpib.a in your projects
With VitaSDK
- Install VitaSDK
- Run
vdpm taihen
to installlibtaihen_stub
- Run
make -j4 install USE_VITASDK=1
- Link libpib.a in your projects
Note when building your projects:
ALWAYS COMPILE YOUR PROJECTS WITH UNSAFE. Doing otherwise will result in PIB failing.
With VitaSDK you can specify the SceLibc heap size by defining sceLibcHeapSize
in your code:
unsigned int sceLibcHeapSize = 2 * 1024 * 1024;
Piglet needs an SceLibc heap size of at least 2MB to intialize. Without it, the module will fail to start. This heap needs to be larger if using -nostdlib
as this becomes your main heap. More info on -nostdlib
support in the headers.
You'll need to link your program with:
- libpib.a
- liblibScePiglet_stub.a
- libSceShaccCg_stub.a
- libtaihen_stub.a
- libSceAppMgr_stub.a
For DolceSDK, you'll also need:
- libSceSharedFb_stub.a
- libSceGxmInternalForVsh_stub.a
- libSceGxmInternal_stub.a
Check the "Samples" folder for examples of how to use PIB to initialize OpenGLES 2.0 with EGL or GLFW.
Yes. We have a GLFW3 port for the vita. You can use it by simply including it in your project as normal or build it here: Glfw Vita.
Note: Button mapping is perfect and there's full touchscreen support.
To install Piglet on your Vita, just use the Pigs in a Blanket Configuration Tool.
Documentation Provided in the Headers. I'm clean.
Special Thanks
- GrapheneCt - Finding the Piglet Module and being a main part of the Project in reverse engineering and testing
- dots-tb - Initial idea of using PSM and efforts in getting all of the names for Piglet, as well as being a main part of the Project in reverse engineering and testing
- cuevavirus - Help with debugging and sense of direction
- CreepNT - Help with debugging
- Princess-of-Sleeping - Dump tool and PrincessLog
- xyzz - Initial deep dive into how ShaccCg works
- Zer0xFF and masterzorag - Their amazing work on the PS4 Piglet reverse engineering
GLSL to CG Conversion Resources
- Microsoft GLSL to HLSL: https://docs.microsoft.com/en-us/windows/uwp/gaming/glsl-to-hlsl-reference
- Nvidia CG Standard Library: http://developer.download.nvidia.com/cg/index_stdlib.html
- Nvidia CG GLSL Vert to CG: http://developer.download.nvidia.com/cg/glslv.html
- Nvidia CG GLSL Frag to CG: http://developer.download.nvidia.com/cg/glslf.html
This requires both libshacccg.suprx and libScePiglet.suprx to be located in ur0:data/external
Changelog
(v.2.0)
- What's new?
- System Application Support
- Fully Enabled Sony EGL Extensions (Common Dialog Support)
- MSAA x4 Support
- Bugfixes
- Fixed incorrect usage of EGL 1.5's eglGetProcAddresss. Using EGL 1.5 features now has to be manually enabled using the PIB_GET_PROC_ADDR_CORE flag
- Fixed glGetBooleanv always returning GL_FALSE when using GL_SHADER_COMPILER as the symbolic constant and ShaccCg is enabled
- Fixed eglSwapInterval would always be locked to 1 no matter what value was entered
- Fixed Libc and FIOS2 always attempting to be started no matter what
- Fixed ability to double initialize/terminate
(v.1.1)
- First Release.
External links
- Official Website - https://forum.devchroma.nl/index.php/topic,308.0.html
- Github - https://github.com/SonicMastr/Pigs-In-A-Blanket