mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2025-02-08 06:13:25 +01:00
![Crementif](/assets/img/avatar_default.png)
This includes the new Breath of the Wild graphic packs. Noteworthy changes (that'll hopefully break nothing!) are: General Changes: * Improving the menu navigation using features from the V5 graphic pack features! Big thanks to @MrPigglet for doing the work here! * All graphic packs have had their descriptions, names and folder structure improved. * Updating all packs to use native Cemu patches! Should just mean better compatibility in the future. Graphic Pack Improvements: * Merged related settings together into PC-game-like Graphics and Enhancements graphic packs menus. * Added Draw Distance pack( which also includes the old LOD Bias setting)! This includes a NPC/Enemy draw distance pack and an object one which is stuff like bushes, general model details and other stuff. However, the object part is still experimental and messes with some other level of detail. * Changed the vague Pro Hud option into the "Remove HUD elements" pack, which now also supports removing the camera HUD for screenshots (also experimental™) and other options. These will no longer corrupt any textures either! * Fixed the weather pack, which now also allows you to individually change the weather types. Say bye to rain (specifically)! * Added some cool timelapse options to the Day Length graphic pack. Just wanted to mention that here since it's pretty cool! * Added a Camera Sensitivity pack, made by FakeMichau and theboy181. * Cel Shading pack is refactored and should be less confusing to enable. * Glowing Guardian Colors pack was much improved, making stylizing some of those guardian colors really cool! Major FPS++ Improvements: * Fixed shield surfing, thanks to @Xalphenos! * Fixed flurry rushes not connecting sometimes at higher FPS! * Fixed Thunderblight Ganon flying off in the distance while fighting him! * Added a preview of a menu navigation speed made by @Exzap which makes the game far more playable at anything above 60FPS which has to be manually enabled in the Advanced Settings for now. The reason why it's disabled is because it's buggy at (sub) 30FPS in the menus and it disables fast scrolling (speed up when you hold a direction for a longer time). The full version of this fix will be enabled by default and won't be a special setting. Is this FPS++ 2.0?! * Added two different modes which hides some of the complexity. Simple will give most of the settings normal users should care about! * Also added an option to temporarily lock to 30FPS. It is in practice just setting your FPS limit to 30FPS, but I hoped to make users aware of when to temporarily switch to 30FPS to prevent some of the small remaining issues (like some cutscenes crashing at more then 60FPS). * Made FPS++ able to be changed while running the game. * Added a static FPS mode (and removed the separate static FPS graphic pack since it was no longer up-to-date) under the advanced settings. Random Improvements: * Fixed fog graphic pack, which now does Ganon's castle smoke again. * Added more resolutions and aspect ratios! Other packs also have much more options added! * Reshade Compatibility pack is now better titled, since users that weren't using Reshade were enabling it regardless which broke their graphics. * Refactored folder structure to the new model. * Many other changes that I forgot! Based on https://github.com/MrPigglet/gfx_pack Co-authored-by: MrPigglet <14359517+MrPigglet@users.noreply.github.com>
104 lines
3.7 KiB
Plaintext
104 lines
3.7 KiB
Plaintext
#version 420
|
|
#extension GL_ARB_texture_gather : enable
|
|
#ifdef VULKAN
|
|
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
|
|
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
|
|
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
|
|
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
|
|
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
|
|
#define gl_VertexID gl_VertexIndex
|
|
#define gl_InstanceID gl_InstanceIndex
|
|
#else
|
|
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
|
|
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
|
|
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
|
|
#define SET_POSITION(_v) gl_Position = _v
|
|
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
|
|
#endif
|
|
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
|
|
|
|
// shader 22c410044398c7af
|
|
// Fixed radius blur
|
|
// shadow pass blur v
|
|
const float resScale = $shadowRes;
|
|
|
|
#ifdef VULKAN
|
|
layout(set = 0, binding = 0) uniform ufBlock
|
|
{
|
|
uniform ivec4 uf_remappedVS[1];
|
|
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
|
|
};
|
|
#else
|
|
uniform ivec4 uf_remappedVS[1];
|
|
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
|
|
#endif
|
|
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
|
|
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
|
|
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
|
|
out gl_PerVertex
|
|
{
|
|
vec4 gl_Position;
|
|
float gl_PointSize;
|
|
};
|
|
layout(location = 0) out vec4 passParameterSem0;
|
|
int clampFI32(int v)
|
|
{
|
|
if( v == 0x7FFFFFFF )
|
|
return floatBitsToInt(1.0);
|
|
else if( v == 0xFFFFFFFF )
|
|
return floatBitsToInt(0.0);
|
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
|
}
|
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
|
void main()
|
|
{
|
|
vec4 R0f = vec4(0.0);
|
|
vec4 R1f = vec4(0.0);
|
|
vec4 R2f = vec4(0.0);
|
|
uvec4 attrDecoder;
|
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
|
float PS0f = 0.0, PS1f = 0.0;
|
|
vec4 tempf = vec4(0.0);
|
|
float tempResultf;
|
|
int tempResulti;
|
|
ivec4 ARi = ivec4(0);
|
|
bool predResult = true;
|
|
vec3 cubeMapSTM;
|
|
int cubeMapFaceId;
|
|
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
|
|
attrDecoder.xyz = attrDataSem0.xyz;
|
|
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
|
|
attrDecoder.w = 0;
|
|
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
|
|
attrDecoder.xy = attrDataSem1.xy;
|
|
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
|
|
attrDecoder.z = 0;
|
|
attrDecoder.w = 0;
|
|
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
|
|
// 0
|
|
backupReg0f = R1f.x;
|
|
backupReg1f = R1f.y;
|
|
R1f.x = backupReg0f;
|
|
R1f.x *= 2.0;
|
|
R1f.y = backupReg1f;
|
|
R1f.y *= 2.0;
|
|
R1f.z = -(1.0);
|
|
R1f.w = 1.0;
|
|
PS0f = intBitsToFloat(uf_remappedVS[0].y) / resScale * intBitsToFloat(0x3fae8a72);
|
|
// 1
|
|
backupReg0f = R2f.y;
|
|
R0f.x = R2f.x;
|
|
R0f.y = R2f.y;
|
|
R2f.z = R2f.y + PS0f;
|
|
R2f.w = R2f.y;
|
|
R2f.y = backupReg0f + -(PS0f);
|
|
PS1f = R2f.y;
|
|
// export
|
|
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
|
|
// export
|
|
passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
|
// export
|
|
// skipped export to semanticId 255
|
|
}
|