mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-29 21:04:14 +01:00
Add sample "Source code" and build script for Super Mario 3D World
This commit is contained in:
parent
74da3e3dd6
commit
a1fcd184fb
@ -0,0 +1,28 @@
|
||||
#version 420
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
// shader 4102408f48cb6b94
|
||||
// Used for: Vertical Blur 1
|
||||
const float blurFactor = 1.0; //Higher is less blur
|
||||
|
||||
// Implementation of http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/
|
||||
layout(binding = 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
// Calculated with BlurNinja with as parameters: --expand 4 --reduce 4 17 --linear
|
||||
uniform float weight[] = float[](0.16122494, 0.26575540, 0.12180456, 0.02865990, 0.00316767);
|
||||
uniform float offset[] = float[](0.00000000, 1.44000000, 3.36000000, 5.28000000, 7.20000000);
|
||||
|
||||
ivec2 inputRes = textureSize(textureUnitPS0, 0);
|
||||
vec2 outputRes = vec2(float(inputRes.x), float(inputRes.y));
|
||||
vec2 scale = outputRes * blurFactor;
|
||||
void main()
|
||||
{
|
||||
vec2 R0f = vec2(passParameterSem0.x, passParameterSem0.w);
|
||||
vec4 R1f = texture(textureUnitPS0, R0f) * weight[0];
|
||||
for (int i = 1; i<4; i++) {
|
||||
R1f += texture(textureUnitPS0, R0f + (vec2(0.0, offset[i]) / scale)) * weight[i];
|
||||
R1f += texture(textureUnitPS0, R0f - (vec2(0.0, offset[i]) / scale)) * weight[i];
|
||||
}
|
||||
passPixelColor0 = R1f;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
#version 420
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
// shader 46575655811a12b7
|
||||
// Used for: Horizontal Blur
|
||||
const float blurFactor = 1.0; //Higher is less blur
|
||||
|
||||
// Implementation of http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/
|
||||
layout(binding = 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
// Weights and Offsets calculated with BlurNinja with these arguments: --expand 4 --reduce 4 17 --linear
|
||||
uniform float weight[] = float[](0.16122494, 0.26575540, 0.12180456, 0.02865990, 0.00316767);
|
||||
uniform float offset[] = float[](0.00000000, 1.44000000, 3.36000000, 5.28000000, 7.20000000);
|
||||
|
||||
ivec2 inputRes = textureSize(textureUnitPS0, 0);
|
||||
vec2 outputRes = vec2(float(inputRes.x), float(inputRes.y));
|
||||
vec2 scale = outputRes * blurFactor;
|
||||
void main()
|
||||
{
|
||||
vec2 R0f = vec2(passParameterSem0.w, passParameterSem0.x);
|
||||
vec4 R1f = texture(textureUnitPS0, R0f) * weight[0];
|
||||
for (int i = 1; i<4; i++) {
|
||||
R1f += texture(textureUnitPS0, R0f + (vec2(offset[i], 0.0) / scale)) * weight[i];
|
||||
R1f += texture(textureUnitPS0, R0f - (vec2(offset[i], 0.0) / scale)) * weight[i];
|
||||
}
|
||||
passPixelColor0 = R1f;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
#version 420
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
// shader 74b3539704b05bfd
|
||||
// Used for: Horizontal Blur 1
|
||||
const float blurFactor = 1.0; //Higher is less blur
|
||||
|
||||
// Implementation of http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/
|
||||
layout(binding = 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
// Calculated with BlurNinja with as parameters: --expand 3 --reduce 3 13 --linear
|
||||
uniform float weight[] = float[](0.18571429, 0.28870130, 0.10363636, 0.01480519);
|
||||
uniform float offset[] = float[](0.00000000, 1.42105263, 3.31578947, 5.21052632);
|
||||
|
||||
ivec2 inputRes = textureSize(textureUnitPS0, 0);
|
||||
vec2 outputRes = vec2(float(inputRes.x), float(inputRes.y));
|
||||
vec2 scale = outputRes * blurFactor;
|
||||
void main()
|
||||
{
|
||||
vec2 R0f = vec2(passParameterSem0.w, passParameterSem0.x);
|
||||
vec4 R1f = texture(textureUnitPS0, R0f) * weight[0];
|
||||
for (int i = 1; i<4; i++) {
|
||||
R1f += texture(textureUnitPS0, R0f + (vec2(offset[i], 0.0) / scale)) * weight[i];
|
||||
R1f += texture(textureUnitPS0, R0f - (vec2(offset[i], 0.0) / scale)) * weight[i];
|
||||
}
|
||||
passPixelColor0 = R1f;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
#version 420
|
||||
#extension GL_ARB_texture_gather : enable
|
||||
// shader f5190dd4ae552353
|
||||
// Used for: Vertical Blur 1
|
||||
const float blurFactor = 1.0; //Higher is less blur
|
||||
|
||||
// Implementation of http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/
|
||||
layout(binding = 0) uniform sampler2D textureUnitPS0;
|
||||
layout(location = 0) in vec4 passParameterSem0;
|
||||
layout(location = 0) out vec4 passPixelColor0;
|
||||
|
||||
uniform float weight[] = float[](0.18571429, 0.28870130, 0.10363636, 0.01480519);
|
||||
uniform float offset[] = float[](0.00000000, 1.42105263, 3.31578947, 5.21052632);
|
||||
|
||||
ivec2 inputRes = textureSize(textureUnitPS0, 0);
|
||||
vec2 outputRes = vec2(float(inputRes.x), float(inputRes.y));
|
||||
vec2 scale = outputRes * blurFactor;
|
||||
void main()
|
||||
{
|
||||
vec2 R0f = vec2(passParameterSem0.x, passParameterSem0.w);
|
||||
vec4 R1f = texture(textureUnitPS0, R0f) * weight[0];
|
||||
for (int i = 1; i<4; i++) {
|
||||
R1f += texture(textureUnitPS0, R0f + (vec2(0.0, offset[i]) / scale)) * weight[i];
|
||||
R1f += texture(textureUnitPS0, R0f - (vec2(0.0, offset[i]) / scale)) * weight[i];
|
||||
}
|
||||
passPixelColor0 = R1f;
|
||||
}
|
45
Source/SuperMario3DWorld/patches.txt
Normal file
45
Source/SuperMario3DWorld/patches.txt
Normal file
@ -0,0 +1,45 @@
|
||||
<?
|
||||
$width = $argv[1];
|
||||
$height = $argv[2];
|
||||
|
||||
$aspect = $width / (float)$height;
|
||||
|
||||
if (round($aspect*100.0) == 178)
|
||||
exit(1);
|
||||
|
||||
$aspect = number_format((float)$aspect, 3, '.', '');
|
||||
?>
|
||||
[RedCarpetAspectUW]
|
||||
moduleMatches = 0xBBAF1908, 0xD2308838, 0xEB70C731
|
||||
# rodata constants
|
||||
0x10363ED4 = .float <?=$aspect?>
|
||||
0x1036A688 = .float <?=$aspect?>
|
||||
_aspectAddr = 0x10363ED4
|
||||
|
||||
# Aspect calculation
|
||||
0x0241D9B4 = lis r8, _aspectAddr@ha
|
||||
0x0241D9B8 = lfs f0, _aspectAddr@l(r8)
|
||||
|
||||
[KinopioAspectUW]
|
||||
moduleMatches = 0x43781F76, 0xC64B0A12, 0xD80AD9B4
|
||||
#rodata constants
|
||||
0x100A0EE0 = .float <?=$aspect?>
|
||||
0x100BE2EC = .float <?=$aspect?>
|
||||
0x100D79B4 = .float <?=$aspect?>
|
||||
_aspectAddr = 0x100A0EE0
|
||||
|
||||
#Aspect Calculation
|
||||
0x02368158 = lis r31, _aspectAddr@ha
|
||||
0x0236815c = lfs f13, _aspectAddr@l(r31)
|
||||
|
||||
[KinopioAspectUWv16]
|
||||
moduleMatches = 0x9E0461E7, 0x1B377483, 0x0576A725
|
||||
#rodata constants
|
||||
0x0100A2D38 = .float <?=$aspect?>
|
||||
0x0100C0164 = .float <?=$aspect?>
|
||||
0x0100D982C = .float <?=$aspect?>
|
||||
_aspectAddr = 0x0100A2D38
|
||||
|
||||
#Aspect Calculation
|
||||
0x02373530 = lis r31, _aspectAddr@ha
|
||||
0x02373534 = lfs f13, _aspectAddr@l(r31)
|
101
Source/SuperMario3DWorld/rules.txt
Normal file
101
Source/SuperMario3DWorld/rules.txt
Normal file
@ -0,0 +1,101 @@
|
||||
<?
|
||||
$fullWidth = $argv[1];
|
||||
$fullHeight = $argv[2];
|
||||
$halfWidth = $fullWidth / 2;
|
||||
$halfHeight = $fullHeight / 2;
|
||||
$quarterWidth = $fullWidth / 4;
|
||||
$quarterHeight = $fullHeight / 4;
|
||||
|
||||
$title = $fullWidth . "x" . $fullHeight;
|
||||
|
||||
$aspect = $fullWidth / (float)$fullHeight;
|
||||
if (round($aspect*10) == 23 || round($aspect*10) == 24)
|
||||
$title = $title . " (21:9)";
|
||||
|
||||
?>
|
||||
[Definition]
|
||||
titleIds = 0005000010145d00,0005000010145c00,0005000010106100
|
||||
name = "Super Mario 3D World - <?=$title?>"
|
||||
version = 2
|
||||
|
||||
[TextureRedefine] # tv
|
||||
width = 1280
|
||||
height = 720
|
||||
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
|
||||
overwriteWidth = <?=$fullWidth?>
|
||||
overwriteHeight = <?=$fullHeight?>
|
||||
|
||||
[TextureRedefine] # zoomed in
|
||||
width = 1128
|
||||
height = 720
|
||||
overwriteWidth = <?=$fullWidth?>
|
||||
overwriteHeight = <?=$fullHeight?>
|
||||
|
||||
[TextureRedefine] # zoom transition
|
||||
width = 1000
|
||||
height = 600
|
||||
overwriteWidth = <?=$fullWidth?>
|
||||
overwriteHeight = <?=$fullHeight?>
|
||||
|
||||
[TextureRedefine] # zoom transition 2
|
||||
width = 1000
|
||||
height = 720
|
||||
overwriteWidth = <?=$fullWidth?>
|
||||
overwriteHeight = <?=$fullHeight?>
|
||||
|
||||
[TextureRedefine] # half-res alpha
|
||||
width = 640
|
||||
height = 360
|
||||
formatsExcluded = 0x41A # exclude obvious textures
|
||||
overwriteWidth = <?=$halfWidth?>
|
||||
overwriteHeight = <?=$halfHeight?>
|
||||
|
||||
[TextureRedefine] # half-res (zoomed in)
|
||||
width = 564
|
||||
height = 360
|
||||
overwriteWidth = <?=$halfWidth?>
|
||||
overwriteHeight = <?=$halfHeight?>
|
||||
|
||||
[TextureRedefine] # half-res (zoom transition)
|
||||
width = 500
|
||||
height = 300
|
||||
overwriteWidth = <?=$halfWidth?>
|
||||
overwriteHeight = <?=$halfHeight?>
|
||||
|
||||
[TextureRedefine] # half-res (zoom transition 2)
|
||||
width = 500
|
||||
height = 360
|
||||
overwriteWidth = <?=$halfWidth?>
|
||||
overwriteHeight = <?=$halfHeight?>
|
||||
|
||||
[TextureRedefine] # quarter-res alpha
|
||||
width = 320
|
||||
height = 180
|
||||
formatsExcluded = 0x41A # exclude obvious textures
|
||||
overwriteWidth = <?=$quarterWidth?>
|
||||
overwriteHeight = <?=$quarterHeight?>
|
||||
|
||||
[TextureRedefine] # q-res (zoomed in)
|
||||
width = 282
|
||||
height = 180
|
||||
overwriteWidth = <?=$quarterWidth?>
|
||||
overwriteHeight = <?=$quarterHeight?>
|
||||
|
||||
[TextureRedefine] # q-res (zoom transition)
|
||||
width = 250
|
||||
height = 150
|
||||
overwriteWidth = <?=$quarterWidth?>
|
||||
overwriteHeight = <?=$quarterHeight?>
|
||||
|
||||
[TextureRedefine] # q-res (zoom transition 2)
|
||||
width = 250
|
||||
height = 180
|
||||
overwriteWidth = <?=$quarterWidth?>
|
||||
overwriteHeight = <?=$quarterHeight?>
|
||||
|
||||
[TextureRedefine] # gamepad
|
||||
|
||||
width = 854
|
||||
height = 480
|
||||
#overwriteWidth = <?=$fullWidth?>
|
||||
#overwriteHeight = <?=$fullHeight?>
|
44
build.sh
Normal file
44
build.sh
Normal file
@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
baseOutDir=$1
|
||||
if [ -n "$baseOutDir" ]; then
|
||||
if [ ! -d "$baseOutDir" ]; then
|
||||
echo "Making base output directory $baseOutDir"
|
||||
mkdir "$baseOutDir"
|
||||
fi
|
||||
fi
|
||||
|
||||
build_dir () {
|
||||
srcDir=$1
|
||||
dstDir=$2
|
||||
if [ -n "$baseOutDir" ]; then
|
||||
dstDir="$baseOutDir/$dstDir"
|
||||
fi
|
||||
|
||||
params=( "$@" )
|
||||
rest=( "${params[@]:2}" )
|
||||
|
||||
if [ ! -d "$dstDir" ]; then
|
||||
echo "Making output directory $dstDir"
|
||||
mkdir -p "$dstDir"
|
||||
else
|
||||
rm "$dstDir"/*.txt
|
||||
fi
|
||||
|
||||
for f in "$srcDir"/*.txt
|
||||
do
|
||||
filename=`basename $f`
|
||||
outName="$dstDir/$filename"
|
||||
echo "Building $f to $outName with params ${rest[@]}"
|
||||
php5 "$f" ${rest[*]} > "$outName"
|
||||
if [ $? -ne 0 ]; then
|
||||
rm "$outName"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
build_dir "Source/SuperMario3DWorld" "Quality/SuperMario3DWorld_1080p" 1920 1080
|
||||
build_dir "Source/SuperMario3DWorld" "Quality/SuperMario3DWorld_1080pUW" 2560 1080
|
||||
build_dir "Source/SuperMario3DWorld" "Quality/SuperMario3DWorld_1440p" 2560 1440
|
||||
build_dir "Source/SuperMario3DWorld" "Quality/SuperMario3DWorld_1800p" 3200 1800
|
||||
build_dir "Source/SuperMario3DWorld" "Quality/SuperMario3DWorld_2160p" 3840 2160
|
||||
|
Loading…
Reference in New Issue
Block a user