From 1ad39cb5dd52e87c4b00b17456a1dcdbb89e74d7 Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sun, 13 Mar 2022 02:30:02 +0100 Subject: [PATCH] -bgfx: Added default LUT PNG, fixes LUT-effect crash. Fixed external texture loading, restoring HQx filters. [Ryan Holtz] (#9401) --- artwork/lut-default.png | Bin 0 -> 491596 bytes bgfx/effects/misc/lut.json | 13 ++++--------- bgfx/shaders/dx11/chains/misc/fs_lut.bin | Bin 830 -> 954 bytes bgfx/shaders/dx9/chains/misc/fs_lut.bin | Bin 513 -> 665 bytes bgfx/shaders/essl/chains/misc/fs_lut.bin | Bin 840 -> 1050 bytes bgfx/shaders/glsl/chains/misc/fs_lut.bin | Bin 798 -> 990 bytes bgfx/shaders/metal/chains/misc/fs_lut.bin | Bin 1197 -> 1434 bytes bgfx/shaders/spirv/chains/misc/fs_lut.bin | Bin 1872 -> 2464 bytes src/osd/modules/lib/osdobj_common.cpp | 2 +- .../render/bgfx/shaders/chains/misc/fs_lut.sc | 13 ++++++------- .../modules/render/bgfx/texturemanager.cpp | 2 +- src/osd/windows/winmain.cpp | 4 ++-- 12 files changed, 14 insertions(+), 20 deletions(-) create mode 100644 artwork/lut-default.png diff --git a/artwork/lut-default.png b/artwork/lut-default.png new file mode 100644 index 0000000000000000000000000000000000000000..7c82396f7eb578f4fb2a3a76bec4dc5ccfc33094 GIT binary patch literal 491596 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℞4OO%iW5~tgd6mJQdYBbo`6Q62^?} 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 U<-A+-AKizF>rSe;5M7rew_%TGL;wH) delta 408 zcmdnRzK@O9E!cybvH8H844VBpQH@KmcSvT!N~DsXsPZoLQOC zZL&49a!eaD$Z&|+ZcGq!K@Kj0IwFh};%S&1P(9ck77PsRpA;Ytb>oB5au7K?s8a!~ C9x{^v diff --git a/bgfx/shaders/dx9/chains/misc/fs_lut.bin b/bgfx/shaders/dx9/chains/misc/fs_lut.bin index 4ad181dc43ac8858341836ab2fc6235b037e78f9..fe815923543affff9b6a192bd3623ce1407edecb 100644 GIT binary patch literal 665 zcmZ8eJx{_=6g}@1ga}C!Tutn#iz(6F2*fbppy=Ef!AOEaC>Y~ZqN4-u4jq`lpJ3wZ zrhmbtqb~jc>$$ID2sgcX=bU#xU-#6;X$mf|5C55OyrHr-+$g(dVw zr`^#lx`M{N2((AKHgUj{QGjQoC0%FQ-!j}QZ=#b80J9RN(?xw@HRi}PDSBda3!=;7 zo{Rm~X|LmV⁣!;f7PK)oV`u{G`$BIpxkpx78*nx|>Bz5BQWCcF0OEKtNAyjjJqE z0PK!XmdF)s=10tnLe}Daj`w3~<6wn} zd^hr#@p6});i1H83CKE literal 513 zcmZ8d!AiqG6rA0Swx}4;t6+}mK~lUH#8#w-c+lFLP{dR$R8pDK5&-e_$FM;PKaR@xMfV?TX za(YhvueSLWD>N`uNY8MtU|dgEfx2IcF1=#U!}uhho{D=_NxxB8XTA`WoAhcZ?%SLp z?$v+$sRwxcA;$q*D)jP&rkQ;eP_t9XX&CxGh|0}0ZYDWr${jShM&>VBYXN)%zp`C% diff --git a/bgfx/shaders/essl/chains/misc/fs_lut.bin b/bgfx/shaders/essl/chains/misc/fs_lut.bin index fdbb338c0b5644eb5643e48526cde0e5ef29d226..28e0619e2b3c7ad7e866417ba7e6f9c30c329bbb 100644 GIT binary patch literal 1050 zcmZ`&OKyWO5GDPn5?S;LvxGLa5`I}kS+%OV?*R}>2tfiI@e5FO)id=#y+TjWv11dH zq$rCp^Ze$$H|F*IZ9Mw={n7Bb(Z-cuhK*muT{ycMX&V0Uxv%^$IAD$rqw~-##sd0INI)@4p$D;{)#3vpDy&XriD!;T~V5^v0r8JhUTeySP}V8 ze<1gWDS~vDgt_$sT=(S$H-NfmyoNN0GcZj3LkCFco{P5u4RUq@dz3R@jYXAu+V2hS_bU}v|aCTV8vCexOf1YG?xQx za>m*y^U)S6mtgmT`qmr-Ye_wxGSx#C^mN=NXFbhf5QB#yFO~h1wl~MGwQxOGrpz%( z7DyU5s93!U{Gv@%Hq4x%C&McvaDv+t5a}MH!o7*VDeDL diff --git a/bgfx/shaders/glsl/chains/misc/fs_lut.bin b/bgfx/shaders/glsl/chains/misc/fs_lut.bin index cf06257c60143c7690f23402579829c3fbfc963a..a2dc69456366411404d450c1eed3cb3898905526 100644 GIT binary patch literal 990 zcmZuw%WlFj5Da~&QaJP%d`wyzL0%jXr&d+({QxV1fFdO^avsE~dg_<<7y1R=H8wav z#DUC?XJ>Yu_s@^<=;!a(g6GZ}H?&SWT4jAYyBS#){NQ%y|HeH3Jr7M;*K3&)b>;nu!E5`U5DovSf7%vV73`-Z4fvr=uN{U^c za{rA;f7c7rD7awRniNS^634Z_Y=TV#0vV(kI$Io|kkrKv98(_w{hure*sdF%LN7-) zo0w5tbvn=|0t7ZWOKOdThF%DIj*-_BG1e;fdNd&VixiQOA_6W%WL#?p-i2Uiw1z}rT9czI#)Yc~ z>1!9U(J%%9NMiU!!SnQk@G*>bX>8dOs3$L|ia9qL%wcpmfgi6*8H3>n#z z;l)rqr5!7Z&I|*BMXMt0ZqRxUjaA9__E_5H^qnW$SNx7JxONPa(_a@zeA~A54{PZ- A3IG5A delta 283 zcmcb|K97ypE!cybvH8jrA%j6>JqW%2Jb! zGz|0%3{6c9j4X|H6b$q%EsYE<%uO{Fv=pFU5u%uScna@i6rTwpeG1f=^b2p z5IuoxRx*GlhA7K6G_5_ zwd;w=^e*4olcF1iyhYK)nHbp4$h0eq3Sfz%iGl-!=L~|-^lr-hA6*ODOiihliEvm18Y%)2&zb+Hp<@Gcab`+FPmA4-mckH? zZiQy(o2>?GXct4~Ah^-asPUFy)n;ZONcUf*WQ_T#N=J)dw+6(BYh~U?<;JE|G6v29 cN-?3Znf+@bg88&i#lTci1;69IOiNeNH*$fkUjP6A delta 372 zcmbQmy_S>LE!cybvH8%vjG<6G*4!8NEm>HSsC;<6}ra+daHJ1Vq zfK@5P8yOn|O#x~(0O|yrRfQ&R0+a_T16qPAQEzMslmQx(Uj%f7u`!ytCQyAQ3fdq? z0u^gvb%L=%ys@z%#H7R$V~|o49f*aMU>asHNSR&**fAz1K&MRJ$l}6iJoy`ou^G@V mZMfku&6=9PV5!o9cob}|v4SqhU`tI+kQ&R$`K+2u4h#VI*IK*) diff --git a/bgfx/shaders/spirv/chains/misc/fs_lut.bin b/bgfx/shaders/spirv/chains/misc/fs_lut.bin index b8e051b650ddfb600ed9327f20c5c7e4e5cb825e..ccf2f5b838092f0b82e55218ddcc45be12262e07 100644 GIT binary patch literal 2464 zcmZvc+isgx5Jq?6*lBP|0_D^os+1Hin${TFLL{K1fSMvzYG}&g&N7K(tT=ISoGRi9 zRB_AGfCK`>Ej$LVfC?&y0&D%=6RfDCPWH_A&7PTmX1iC{u2skG{Q65mCQ^03F=!n$ z_Bx-oUVIc}OgPQ#H#$4FN155ol=npIY22{!xiq=gxUkXPAJkJRBTG{$mBtq)&Gk?^ zmOdG#OpkC!vzjW!xpIB&dTnp8QM-7l?$w8f847MDP0^eErL^7b?8twOeuI9G{*2BN zFHa$?QYv%ar9c^U^j?{Ii*QBbYt8N5ZmW+=TqV^4ztuVz?Dt!Nzf|DGhaKK9{^I}m z;SKS1@b`8)o4x+_o88{}mU$`}*B%)%=wuP^ERKwso=T}`0?xdCbGzHP+Hbbs>h<~? zxZvet4!0ZYy>72x%udX?6f0XdvR>SGP9L>54~h(LHwR6kSD23TcotQ{KaK4R(04AQ zyuQ3!mv=s+yuSR2%sZ!1USHlfa*fWMm$EQC4zaO}&2p{~ZCuoJE~7d1&FLL`a#mGz zCi}jXQ>Y^EeDovU*#v)rD%LqoO?%Xy<8OuY2@v1dJbIFMd5lxvJfjl+lhm>gW6Yy} zJo~;&edjcMx8|KlXYm#5y_$V@q{yEinni7SeRrZnygN{Wcjn6D#J|EhkJ{s6_Lq+M zui-0C^S#TQe&;D--GTk9_TnS-yTq-f?=HlwwaGb;D%R3(qt^ER$DGFc{qmk$XiA^G zA-{_yAN9V%_O8D5^xd^s`0hILf0u1{Ag}N4gZ~NJ9Y;QW--1|;zwV|-aP+q8#gu-0 znRjbn?ocuQ9!Qz~a`euv_5g$|wlZ>aln-|od)?%;P+?sM|$-^-Za|0S4t z|3J+xcLmH{{fU}y361agE9246-}qvxVn1KxocFQKYfSX`5B7t4{1;sAPVUh}Vq56D z85;+4Chp1_eoM)MVraxoU|U-Wtei29w934E3l$t=<;*h;Zq6xe{uO%`kKU`;F^@KU z%y$}GE_ynSZ4U96`7E}zhC$QMSSlmft|~kaA4;%W?!SI3t3cYc|Q{=Xx3pAMIbF6YyKWSz~b literal 1872 zcmZvbOHY$g5Qa|+A1xFtmw3a(h{TP>+6Z`wVh9>=K?E)8vZ-xpNQyP35EjN@h+BV! zCK7e8KgX3CZwVpM#29^_(=*tGlT6Rd`_7q}GxK#eenw8C*EZkw2 zSSyT|YwOLN>j=n^gmWG7QT@hTk4w5cF$m`dbO$r#y8JmepP$dJHOtwF$sGKFRtC?d zUAOBLhOQP@9>BklzLdU}zLWMV9$tlHb+}09o(e=l+wVoHml5Y1&lgu8)+!CTitBP& z!6Jc_QEMMxj)%)f@hek*d=F z216_nne%<{p8M71O`qXX*&4K|F{%^=PmfL;PVdShtvgqjQH)edKwneCG3ze_I5&gRJ%^<#3xU? zn15Kc=z|z?;`argUE}kn*0(_3PIp>9LcPnuXPyZBnU?8m!{akQ#NwG3Vm$Lfj;a4? zo%Eg2UFw#k&OM$n-+xSQ>yr7)p5MAMrj7HKs+1UTi&>HF+@l%#doGLj^G@pHvkx%y z*#|!HuYyf(czpI_{9D=V)$-x9FR-kBnctFv&#OOX%v=%ppF$#?Q$m^Nm^2f7W^h)@ z?2I3m&Ft{uC#B2|pZYseddH{VH&S}Nt18nvN7V;8sdG;lcTNcdCw4&-=iY~a(>KEL zO!06ZrSK)`(|~;nIJ3VcETQwWl-#_TIIu5Lb^&K`UuAP2G3=XcFzPO9GR*M1lvp_O z^a>~Eu9P_D0dBSSWW(_tJPGxG$R-Ee?U47TE`yUFu^If54TmBeHpekJ%$|MN9J9i} zxo7qM$R;;EEQVRd6$8#YEZ^jR@?8Lv62Be#Ps-+vyvyd&EezarL6cx!J;LY-ML5`n z@hJh+KoR46!~H1%V0?e%BA!~dqqJ=H%Xe&8zkKc?h7AM^*s#HX(a)l`*r#(y825>X bCqKJ{J184|NA^`!*6 diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index be06da29767..52ddca76ca0 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -159,7 +159,7 @@ const options_entry osd_options::s_option_entries[] = { OSDOPTION_BGFX_DEBUG, "0", OPTION_BOOLEAN, "enable BGFX debugging statistics" }, { OSDOPTION_BGFX_SCREEN_CHAINS, "default", OPTION_STRING, "comma-delimited list of screen chain JSON names, colon-delimited per-window" }, { OSDOPTION_BGFX_SHADOW_MASK, "slot-mask.png", OPTION_STRING, "shadow mask texture name" }, - { OSDOPTION_BGFX_LUT, "", OPTION_STRING, "LUT texture name" }, + { OSDOPTION_BGFX_LUT, "lut-default.png", OPTION_STRING, "LUT texture name" }, { OSDOPTION_BGFX_AVI_NAME, OSDOPTVAL_AUTO, OPTION_STRING, "filename for BGFX output logging" }, // End of list diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_lut.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_lut.sc index 2c8cffab7e1..6b00e4a1934 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_lut.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_lut.sc @@ -5,9 +5,9 @@ $input v_color0, v_texcoord0 #include "common.sh" -#define LUT_TEXTURE_WIDTH 4096.0f -#define LUT_SIZE 64.0f -#define LUT_SCALE vec2(1.0f / LUT_TEXTURE_WIDTH, 1.0f / LUT_SIZE) +// Autos +uniform vec4 u_tex_size1; +uniform vec4 u_inv_tex_size1; SAMPLER2D(s_tex, 0); SAMPLER2D(s_3dlut, 1); @@ -17,13 +17,12 @@ void main() vec4 bp = texture2D(s_tex, v_texcoord0); vec3 color = bp.rgb; // NOTE: Do not change the order of parameters here. - vec3 lutcoord = vec3(color.rg * ((LUT_SIZE - 1.0f) + 0.5f) * - LUT_SCALE, (LUT_SIZE - 1.0f) * color.b); + vec3 lutcoord = vec3(color.rg * ((u_tex_size1.y - 1.0) + 0.5) * u_inv_tex_size1.xy, (u_tex_size1.y - 1.0) * color.b); float shift = floor(lutcoord.z); - lutcoord.x += shift * LUT_SCALE.y; + lutcoord.x += shift * u_inv_tex_size1.y; color.rgb = mix(texture2D(s_3dlut, lutcoord.xy).rgb, - texture2D(s_3dlut, vec2(lutcoord.x + LUT_SCALE.y, + texture2D(s_3dlut, vec2(lutcoord.x + u_inv_tex_size1.y, lutcoord.y)).rgb, lutcoord.z - shift); gl_FragColor = vec4(color, bp.a) * v_color0; } diff --git a/src/osd/modules/render/bgfx/texturemanager.cpp b/src/osd/modules/render/bgfx/texturemanager.cpp index a61d77c9177..25512c14e5d 100644 --- a/src/osd/modules/render/bgfx/texturemanager.cpp +++ b/src/osd/modules/render/bgfx/texturemanager.cpp @@ -81,7 +81,7 @@ bgfx_texture* texture_manager::create_png_texture(std::string path, std::string auto* base = reinterpret_cast(bitmap.raw_pixptr(0)); for (int y = 0; y < height; y++) { - copy_util::copyline_argb32(data32 + y * width, base + y * rowpixels, width, nullptr); + copy_util::copyline_argb32_to_bgra(data32 + y * width, base + y * rowpixels, width, nullptr); } if (screen >= 0) diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index ba66380f71e..77eeeaf476e 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -262,9 +262,9 @@ const options_entry windows_options::s_option_entries[] = { WINOPTION_BLOOM_LEVEL6_WEIGHT, "0.04", OPTION_FLOAT, "bloom level 6 weight (1/4 smaller that level 5 target)" }, { WINOPTION_BLOOM_LEVEL7_WEIGHT, "0.02", OPTION_FLOAT, "bloom level 7 weight (1/4 smaller that level 6 target)" }, { WINOPTION_BLOOM_LEVEL8_WEIGHT, "0.01", OPTION_FLOAT, "bloom level 8 weight (1/4 smaller that level 7 target)" }, - { WINOPTION_LUT_TEXTURE, "", OPTION_STRING, "3D LUT texture filename for screen, PNG format" }, + { WINOPTION_LUT_TEXTURE, "lut-default.png", OPTION_STRING, "3D LUT texture filename for screen, PNG format" }, { WINOPTION_LUT_ENABLE, "0", OPTION_BOOLEAN, "Enables 3D LUT to be applied to screen after post-processing" }, - { WINOPTION_UI_LUT_TEXTURE, "", OPTION_STRING, "3D LUT texture filename of UI, PNG format" }, + { WINOPTION_UI_LUT_TEXTURE, "lut-default.png", OPTION_STRING, "3D LUT texture filename of UI, PNG format" }, { WINOPTION_UI_LUT_ENABLE, "0", OPTION_BOOLEAN, "enable 3D LUT to be applied to UI and artwork after post-processing" }, // full screen options