shithub: cstory

Download patch

ref: a112001886c765812966655668b054a483ffb781
parent: f2ffab48e135f8f02802e43f5385f5e9eea8dddf
author: Clownacy <Clownacy@users.noreply.github.com>
date: Sun Apr 19 22:14:45 EDT 2020

Add complete shader sources

binary files a/src/Backends/WiiU/newshader.gsh /dev/null differ
--- /dev/null
+++ b/src/Backends/WiiU/shader sources/fragmentshader.frag
@@ -1,0 +1,8 @@
+#version 150 core
+layout(location = 0) uniform sampler2D tex;
+in vec2 texture_coordinates;
+out vec4 fragment;
+void main()
+{
+	fragment = texture(tex, texture_coordinates);
+}
\ No newline at end of file
--- /dev/null
+++ b/src/Backends/WiiU/shader sources/fragmentshader.psh
@@ -1,0 +1,18 @@
+; $MODE = "UniformRegister"
+; $SAMPLER_VARS[0].name= "tex"
+; $SAMPLER_VARS[0].type= "sampler2D"
+; $SAMPLER_VARS[0].location = 0
+; $NUM_SPI_PS_INPUT_CNTL = 1
+; $SPI_PS_INPUT_CNTL[0].semantic = 0
+; $SPI_PS_INPUT_CNTL[0].default_val = 1
+; $UNIFORM_VARS[0].name = "texture_coordinates"
+; $UNIFORM_VARS[0].type = "vec2"
+; $UNIFORM_VARS[0].count = 1
+; $UNIFORM_VARS[0].offset = 0
+; $UNIFORM_VARS[0].block = -1
+
+00 TEX: ADDR(32) CNT(1) VALID_PIX 
+      0  SAMPLE R0, R0.xy0x, t0, s0
+01 EXP_DONE: PIX0, R0
+END_OF_PROGRAM
+
binary files /dev/null b/src/Backends/WiiU/shader sources/newshader.gsh differ
--- /dev/null
+++ b/src/Backends/WiiU/shader sources/vertexshader.vert
@@ -1,0 +1,9 @@
+#version 150 core
+layout(location = 0) in vec4 input_vertex_coordinates;
+layout(location = 1) in vec2 input_texture_coordinates;
+out vec2 texture_coordinates; 
+void main() 
+{ 
+	gl_Position = input_vertex_coordinates; 
+	texture_coordinates = input_texture_coordinates; 
+} 
--- /dev/null
+++ b/src/Backends/WiiU/shader sources/vertexshader.vsh
@@ -1,0 +1,27 @@
+; $MODE = "UniformRegister"
+; $ATTRIB_VARS[0].name = "input_texture_coordinates"
+; $ATTRIB_VARS[0].type = "vec2"
+; $ATTRIB_VARS[0].location = 1
+; $ATTRIB_VARS[1].name = "input_vertex_coordinates"
+; $ATTRIB_VARS[1].type = "vec2"
+; $ATTRIB_VARS[1].location = 0
+; $NUM_SPI_VS_OUT_ID = 1
+; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0
+
+00 CALL_FS NO_BARRIER 
+01 ALU: ADDR(32) CNT(2) 
+      0  x: MOV         R1.x,  R1.x      
+         y: MOV         R1.y,  R1.y      
+02 EXP_DONE: POS0, R2
+03 EXP_DONE: PARAM0, R1.xyzz  NO_BARRIER 
+04 ALU: ADDR(34) CNT(1) 
+      1  x: NOP         ____      
+05 NOP NO_BARRIER 
+END_OF_PROGRAM
+
+
+
+
+
+
+
--- /dev/null
+++ b/src/Backends/WiiU/shader sources/wtf is this.txt
@@ -1,0 +1,47 @@
+I'mma give it to you straight: compiling shaders for the Wii U is an absolute
+nightmare.
+
+You see, there are three major steps:
+* Compile the GLSL to assembly
+* Fill in a header by-hand
+* Assemble the assembly + header
+
+To compile, you need AMD's 'GPU ShaderAnalyzer', which is Windows-only:
+https://gpuopen.com/archive/gpu-shaderanalyzer/
+
+You then need to compile for the RV730.
+
+After that, you need to fill-in a header. The only way I was able to figure out
+what little I did was by finding examples on the internet:
+https://github.com/snickerbockers/gx2gl/tree/master/src/shaders
+https://github.com/yawut/SDL/tree/wiiu-2.0.9/src/video/wiiu/shaders
+https://github.com/devkitPro/wut/tree/master/samples/cmake/content
+
+Even now, I don't have a complete idea of exactly what everything means.
+
+Anyway, once you have *that* out of the way, you still need to assemble your
+shaders. For that, you'll need `latte-assembler` - a tool that comes with the
+Decaf emulator.
+
+For me, I needed to clone the entire source tree (and its dependencies) in order
+to build the tool successfully, which is a royal pain in the ass.
+
+For compilation, I used MSYS2+MinGW-w64. There were a couple of compilation
+errors I had to address, but nothing too hard to solve.
+
+Eventually you'll have the assembler built. With it, you can link your `.psh`
+and `.vsh` files into the final `.gsh` blob.
+
+Oh, right. I should warn you - the devs changed latte-assembler's syntax at some
+point, so all the example `.psh`/`.vsh` files I could fine online were
+incompatible. That sucked. The main change was that stuff like 'float2' and
+'float4' were changed to 'vec2' and 'vec4'. Just keep that in mind, and you
+should be okay.
+
+Also, latte-assembler's 'assemble' command was originally named 'compile', and
+the other 'compile' option didn't exist. Keep that in mind if you ever find any
+documentation on how to use the tool.
+
+latte-assembler does have an option to convert straight from GLSL to `.gsh`, but
+this feature is woefully incomplete (it doesn't support `sampler2D`), and not
+worth using.