diff --git a/bezel/koko-aio/FXAA-bloom.slangp b/bezel/koko-aio/FXAA-bloom.slangp new file mode 100644 index 0000000..6d258c4 --- /dev/null +++ b/bezel/koko-aio/FXAA-bloom.slangp @@ -0,0 +1,250 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +SATURATION = "1.100000" +GAMMA_OUT = "0.500000" +DO_FXAA = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.300000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.425000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.100000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "0.750000" +BLOOM_GAMMA_OUT = "1.000000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/LICENSE b/bezel/koko-aio/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/bezel/koko-aio/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/bezel/koko-aio/docs.md b/bezel/koko-aio/docs.md new file mode 100644 index 0000000..a0e80c9 --- /dev/null +++ b/bezel/koko-aio/docs.md @@ -0,0 +1,237 @@ +**koko-aio-slang parameters documentation** + + +**Shift RGB components:** + Shift R,G,B components separately to mimic chroma + dephasing and color aberrations. + By varying Red, Green and Blue offsets, the relative component will be + shifted column by column, row by row. + +**Saturated color bleeding:** + Will cause an horizontal chroma bleed which cheaply mimics the effect of + poor composite video signals. + It can be used with RGB shifting and image blurring to give the picture + an ntsc look without dealing with specific encoding/decoding stuffs. + +**Color corrections:** + Modify luminance, saturation, contrast, brightness and color temperature of the + "input" signal. + Gamma correction is applied to the final processed picture. + +**FXAA:** + Apply the well known antialiasing effect by Nvidia. + Use it if you don't want to blur the image and you still don't like + jagged or too much pixelated images. + +**Scanlines:** + Emulate CRT scanlines. + + Scanlines gap brightness: + controls how "little" they will look pronunced. + You can even use a negative value to make the scanline more evident, + but graphical glitches may occour. + Scanlines gap brightness: + Controls how much the gap between scanlines is dark + Compensate brightness loss: + Will make scanlines brighter, where possible, to compensate for the loss of brightness + gicen by the dark gap between them. + Scanlines bleeding: + will cause the scanline itself to light the scanline gap (dark) part. + You may use it to keep a good brightness overrall picture level. + Interlace flicker: + Emulates the flickerin issues present on crt interlaced screens + where the brighter lines flickers wien they are near dark ones. + You can choose to produce the flickering: never, always or only + when the input picture is considered interlaced. + The threshold for that is defined in config.inc + with the parameter: MIN\_LINES\_INTERLACED. + Disable on interlaced screen: + You can choose to completely disable scanline emulation when + the input picture is considered interlaced. + +**Input power/glowing:** + Emulate the CRT glowing "feature", so that the brighter areas of + the image will light their surroundings. + + Input signal glow strength: + The input signal gain + Sharpness: + How much the glow will "spread". + When pushed to its maximum value, no blurring will occour. + Gamma: + Controls how much the signal has to be bright to produce the glow. + Post gain: + This will cause the glowed image to be added to the input signal. + This allows to emulate glow and haloing in a single pass. + However the haloing should be applied after the mask emulation. + Likely to be removed in a future release. + +**RGB Masks and/or Darklines:** + Emulates CRT RGB phosphors (RGB Mask), + slotmasks and aperturegrille (Darklines). + + (HiDPI) Vmask and Darklines multiplier: + This shader is tuned for 1080p, but ff you have an HiDPI display + you may want to scale this filter by a factor. + Vmask Strength: + How much will the RGB mask be visible. + RGB Mask: (LoDPI) Green,Magenta -> BGR: + By exploiting common monitors RGB subpixel order, this causes + the RGB mask, to be emulated by using just 2 pixels instead of 3. + Very useful for 1080p (or lower) displays and to keep more brightness. + RGB Mask: Horizontal Gap between triads: + In real displays rgb triads are separated by a black space. + You can emulate it by turning this feature on. + RGB Mask: affect bright colors: + Emulating RGB masks will lower the resulting image brightness and you + just cant push input signal brightness without "burning" the signal. + By using this option, the RGB mask will be less evident on brighter + colors. However, since this will make the image to look somehow "dull", + it is advised to use the "Halo" feature instead (see later). + Darklines: strength: + How much will the horizontal darklines be visible. + Darklines: offset by triads: + When drawing "straight" horizontal darklines, you can emulate CRT aperture grille. + But if you want slotmasks instead, you need to vertically + offset them every RGB triad. + Darklines: period (triad height): + Basically tells the shader how much a triad has to be high. + Darklines: affect bright colors: + See "RGB Mask: affect bright colors" + +**Halo:** + Emulates the effect of the brighter pixels reflected by the CRT glass + that lights nearby zones (a sort of tight bloom). + The light is meant to be spreaded in a way that it nulls the effect of the + dark scanline parts, darklines and the RGB masks. + So you can use this to restore the brightness and color saturation + loss when using features like scanlines, darklines or RGB masks. + +**Bloom:** + Acts like Halo, but affects a much wider area and is more configurable. + By using this effect and playing with its parameters, you can achieve funny + or even artistic results. + + Final mix: + Modulates between the original images and the bloomed one. + Radius: + Controls how much the bloom has to be wide. + Quality: + How much the shape of the bloomed picture will reflect the original one. + Input Gamma: + Use this as a threshold to control how much a pixel has to be bright + to produce a bloom effect. + Power multiplier: + Just apply a gain to the final bloom. + Output Gamma: + Play with it. + Strength on bright areas: + Since the light produced by the bloom effect is added to the underlying + image, it can produce burn effects on the already bright areas. + This is actually an hack that will avoid to bloom them. + Don't use too low values. + Bypass: + See how the bloomed image looks alone. + +**Curvature:** + Emulates a curved CRT display. + + WARP X, WARP Y: + control how much the display is curved along its axes. + Corner radius, Corner sharpness: + Control the "smoothness" of the display corners. + +**Bezel:** + Draws a monitor frame with simulated reflections from the game content. + The monitor frame is an image loaded by the shader and is shipped + in the "textures" shader subdirectory, named "monitor\_body.png" + It has been made with the following rules that may come handy + only if you want to edit it; otherwise go on. + - The red channel represents the luminance information + - The green channel represents the highlights + - The alpha channel in the inner frame represents the part of the bezel + that will be filled by the game content + - The blue channel represents the part of the bezel that will be filled by the game reflection. + + Bezel color (red,green,blue) and contrast: + Allows to choose the color of the monitor frame. + Image zoom: + Allows to shrink or expand the game content to fit the monitor frame. + Frame zoom: + Allows to shrink or expand the monitor frame to fit the game content. + Image Border: + Draws a black border around the game content. + +**Backgound image:** + Draws an image on screen picked from the "textures" shader subdirectory, + named: background.png
+ **-> It is needed that you set retroarch aspect to "Full" <-** + ( Settings, Video, Scaling, Aspect Ratio = Full ) + The image is painted "under" the game content and under the monitor frame by + default, and his alpha channel will let you see ambient lighs (see next). + + Image over content (alpha channel driven)?: + ...however you can paint the image over the game content and over the + monitor frame itself by selecting this option. + If you do so, the alpha channel of the background image will be used to + let you view the underlying content. + +**Ambient light leds:** + Emulates the presence of led strips under the monitor that lights the + surroundings according to the edges of the game content. + -**\> It is needed that you set retroarch aspect to "Full" <-** + ( Settings, Video, Scaling, Aspect Ratio = Full ) + + Slowness: + How much will the leds will take to reflect the game content. + It may sound silly to make them slow, but if they reacts too fast, + they may distract you. + Keep in mynd that there is a scene detection logic that will make them + react as fast as possible when a scene change is detected. + Light Falloff: + How wide is the area illuminated. + Led power: + Leds post gain. + Note: To avoid burn-in effects, keep Light Falloff + Led power < 1.4 + + +**Aspect Ratio:** + When using effects that need Retroarch aspect ratio option + to be set to "full", you have to provide the source aspect + ratio to the shader. + + Aspect Ratio Numerator: + Setting non positive value here will switch to a predefined + aspect ratio from the following list: + 0 = 1.33 MAME + -1 = 1.55 NTSC + -2 = 1.25 PAL + -3 = 8/7 Snes + -4 = 10/7 Megadrive + -5 = Uncorrected + Aspect Ratio Denominator: + As long as Aspect Ratio Numerator is positive, this will + be used as the denominator of the fraction. + +**Luminosity dependant zoom:** + On older CRT monitors, the picture gets bigger when the image was brighter. + +**Vignette:** + Will cause uneven brightness of the image, more at the center, + less at the edges. + +**Spot:** + Simulates external light reflected by the monitor glass. + +**Alternate line blanking:** + CRT monitors \*real\* refresh was amazing, today is just "meh" in most cases. + This emmulates the low pixel persistance of CRT monitors + and reduces the motion blur, typical of LCD displays, by blanking even/odd + screen lines on even/odd frames, by sacrificing image brightness, ofc. + + Frame insertion strength: + How much the line will be blanked. + Dark lines period: + You can blank single line or a group of them at once. + See what performs better on your display. + diff --git a/bezel/koko-aio/koko-aio.slangp b/bezel/koko-aio/koko-aio.slangp new file mode 100644 index 0000000..0777602 --- /dev/null +++ b/bezel/koko-aio/koko-aio.slangp @@ -0,0 +1,295 @@ +# TODO: +# Guess more aspect ratios: edit. nope: Guessing is impossible.. +# Update pipeline graph + +# Investigate the possible use of mipmapping in bloom function too. +# Try to move flickering scanlines into main, maybe by faking them with screenlines? + + +# Performances: +# haswell igp: i5-4590 CPU @ 3.30GHz +# Output on aspect: full, 1080p, 16:9, 60fps +# All measurements made with aspect=full, so as long as ambient light is not used, the whole screen is filled by the shader. +# This means that all the measurements, but ambient light itself are likely higher than real use. + +# input: mame, dynamite dux: 26/09/2022 27/10/2022 02/11/2022 +# GPU% Delta% vs Basal: +# no shader: 11 -23.6 11 10 10 +# basal: 34.6 0.0 31.5 29.5 27.7 +# FXAA: 37.5 2.9 34.15 32.2 +# scanlines: 36.5 1.9 32.3 31.5 +# ...flickering: 36.2 1.6 32.4 32 +#input glow gamma 3: 40 5.4 36.75 35.2 +# rgb mask: 35.7 1.1 32.60 33.4 ** +# slotmask: 36.5 1.9 33.6 32.1 +# halo gamma 3: 40.0 5.4 36.9 35.5 +# bloom(q2): 38 3.4 35.8 35 30.5 +# color corrections: 35 0.4 31.6 29.5 +# curvature warp: 39.2 4.6 33.5 34.1 +# vignette+spot: 35.2 0.6 33.2 34 +# ambient light: 38 3.4 32.1 33.6 +# Bezel: 37.5 33.7 +#----------------------------------------------- +#Total basal + all the features: 72.2 65.3 65.2 61.2 (bloom q1) + +# Koko-aio shader is meant to be an all-in one crt shader. +# It can be configured with many parameters, so that can be +# scaled to run on even on modest gpus while still developed to +# run with heavier presets on at least Haswell+ iGpus. +# It is not meant to simulate the internal behaviour of CRT displays, +# but to give users the parameters to make their monitors to look similar. +# Several presets are included. + +# Actually it provides emulation for: +# scanlines, screenlines, RGB vertical masks, horizontal slot masks, +# glowing, haloing, blooming, gamma and SATURATION correction,pixel_outi +# black frame insertions, interlace emulation, antialiasing. + +# External code by: +# * CRT - Guest - Dr.Venom (single pass bloom function) +# * Nvidia (FXAA) + + + + + +# Bezel texture contains the following infomations: +# - The red channel represents the luminance information +# - The green channel represents the highlights +# - The alpha channel in the inner frame represents the part of the bezel that will be filled by the game content +# - The blue channel represents the part of the bezel that will be filled by the game reflection. + + textures = "monitor_body;bg_under;bg_over" + + monitor_body = "textures/monitor_body.png" + monitor_body_linear = "true" + # Does this work? + monitor_body_wrap_mode = "clamp_to_edge" + monitor_body_mipmap = "true" + + bg_under = "textures/background_under.png" + bg_under_linear = "true" + bg_under_wrap_mode = "mirrored_repeat" + bg_under_mipmap = "true" + + bg_over = "textures/background_over.png" + bg_over_linear = "true" + bg_over_wrap_mode = "mirrored_repeat" + bg_over_mipmap = "true" + +shaders = 17 +# For P-uae defaults, doubling just y0 seems the best option. +# 90% of games are lowres in vertical size and p-uae defaults +# to 720 pixels width, which is enough for this preset to work as intended. +# Rest warned, that when a game sets an interlaced resolution, p-uae +# will output even 560 h-lines which, doubled, will result in +# 1120 h lines. too much even for a 1080p screen. +# Auto-Cropping/overscan emulation could be added in a future release. +# For other emulators/systems, probably it is best and safe to doulbe x0 too. + +# In the first pass we draw an optional black border around the image for bezel purposes +# and scale the image to something better usable by FXAA +# Scaling y to 2x is needed by flickering scanlines pass. + + shader0 = shaders/first_pass.slang + alias0 = "first_pass" + filter_linear0 = false + scale_type0 = source + scale_x0 = 2.0 + scale_y0 = 2.0 + wrap_mode0 = "mirrored_repeat" +float_framebuffer0 = false + +# Nvidia fxaa pass: +# works good for "SD" resolutions + shader1 = shaders/fxaa.slang + alias1 = "FXAA_pass" + filter_linear1 = true + scale_type1 = source + scale1 = 1.0 + +# FXAA don't really need any mipmap, but avglum_pass several passes after it does. +# and for the weird way retroarch manages mipmaps, specify that FXAA_pass wants mipmaps +# makes first_pass mipmaps available to everyone. +# even if theoretically not needed, texture() occurrence in FXAA_pass needed to be switched +# to textureLod(..,0.0) or it acts weird, don't ask me why. +# yay. + + mipmap_input1 = true + wrap_mode1 = "mirrored_repeat" +float_framebuffer1 = false + + + shader2 = shaders/shift_and_bleed.slang + alias2 = "shift_and_bleed_pass" + filter_linear2 = true + scale2 = 1.0 + scale_type2 = source +float_framebuffer2 = false + mipmap_input2 = false + wrap_mode2 = "mirrored_repeat" + + + +# Blur and glow the image as requested +# This pass aims to simulate the signal input power. +# Glowing will be used to weighting the scanlines. +# In this pass we also generate flickering scanlines by blindly blanking +# alternate lines at #frame interval + + shader3 = shaders/in_glow.slang + alias3 = "in_glow_pass" + filter_linear3 = true + scale3 = 1.0 + scale_type3 = source +float_framebuffer3 = true + wrap_mode3 = "mirrored_repeat" + + +# This essentially is the same as glowing by a code point of view. +# But this pass will be added later on instead of mixed + + shader4 = shaders/halo.slang + alias4 = "halo_pass" + filter_linear4 = true + scale4 = 1.0 + scale_type4 = source +float_framebuffer4 = true + mipmap_input4 = false + wrap_mode4 = "mirrored_repeat" + +# Get the average luminance needed by ambilight here, because: +# * mipmap_input only works on "Source" texture +# * the following pass does not use the previous one +# * the previous pass represents scene changes. + +# The rgb channels of the following pass contains luminance info +# Used by the bezel code to light up the bezel corners. +# The alpha channel contains the sum/3.0 of rgb channels +# used to detect scene changes. + + shader5 = shaders/avglum_pass.slang + alias5 = "avglum_pass" + filter_linear5 = true + scale_type5 = source + scale5 = 0.5 + wrap_mode5 = "mirrored_repeat" + mipmap_input5 = false + +# The following 2 passes will blur the mirrored part of main pass +# to emulate bezel reflections. + + shader6 = shaders/reflection_blur_h.slang + alias6 = "reflected_blurred_pass1" + filter_linear6 = true + scale_type6 = source + scale6 = 1.0 + wrap_mode6 = "mirrored_repeat" + + shader7 = shaders/reflection_blur_v.slang + alias7 = "reflected_blurred_pass2" + filter_linear7 = true + scale_type7 = source + scale7 = 1.0 + wrap_mode7 = "mirrored_repeat" + + +# In the subsequent passes we do first a fast bloom by first +# sampling the original texture and scale it down to keep +# it fast, next we do subsequent blurd of the bloomed +# pass. + + shader8 = shaders/bloom_pass_1.slang + alias8 = "bloom_pass_1" + filter_linear8 = true + scale_type8 = source + scale8 = 1.0 +# I NEED TO SET **THIS** TO mirrored_repeat TO HAVE THE PREVIOUS PASS mirrored_repeated (!?) + wrap_mode8 = "mirrored_repeat" + float_framebuffer8 = true + + + shader9 = shaders/bloom_pass_2.slang + alias9 = "bloom_pass_2" + filter_linear9 = true + scale_type9 = source + scale9 = 0.5 + wrap_mode9 = "clamp_to_edge" + + + shader10 = shaders/bloom_pass_3.slang + alias10 = "bloom_pass_3" + filter_linear10 = true + scale_type10 = source + scale10 = 1.0 + wrap_mode10 = "clamp_to_edge" + + + shader11 = shaders/bloom_pass_4.slang + alias11 = "bloom_pass_final" + filter_linear11 = true + scale_type11 = source + scale11 = 1.0 + wrap_mode11 = "mirrored_repeat" + + +# Back led lights: +# Since the next pass will need mipmaps of the original image, and is only possible to get mipmaps + from the very previous pass, the next one will just passthrough the original image +# + + shader12 = shaders/ambi_push_pass.slang + alias12 = "ambi_push_pass" +# I NEED TO SET **THIS** TO true TO HAVE THE PREVIOUS PASS linearly filtered + filter_linear12 = true + scale_type12 = source + scale12 = 1.0 + wrap_mode12 = "mirrored_repeat" + mipmap_input12 = false + float_framebuffer12 = true + +# Gather mipmaps from prevous pass and use them to light virtual leds under the virtual monitor + shader13 = shaders/ambi_pre_pass.slang + alias13 = "ambi_pre_pass1" + filter_linear13 = true + scale_type13 = source + scale13 = 1.0 + mipmap_input13 = true + wrap_mode13 = "clamp_to_border" + float_framebuffer13 = false + +# Temporally smooth led lights. + shader14 = shaders/ambi_temporal_pass.slang + alias14 = "ambi_temporal_pass" + filter_linear14 = true + scale_type14 = source + float_framebuffer14 = true + + +# In this pass we gather information about the rotated state of the source +# This information can only be taken when a pass scales to viewport +# So use a low output resolution to keep things as light as possible. +# The feedback of this pass will be queried by previous ones. +# I tried to move this into final_pass, but the gpu consumption was higher. + + shader15 = shaders/isrotated.slang + alias15 = "isrotated_pass" + filter_linear15 = true + scale15 = 0.1 + scale_type15 = viewport + wrap_mode15 = "mirrored_repeat" + +# In this pass we emulate scanlines, glowing, +# RGB vertical mask, slot mask,haloing and color corrections + +# This pass pass will do the composition of the previous passes +# with the bloomed image, vignette and spot light, black frame insertions +# and Bezel emulation + + shader16 = shaders/final_pass.slang + alias16 = "final_pass" + filter_linear16 = true + scale_type16 = viewport + scale16 = 1.0 + wrap_mode16 = "mirrored_repeat" + diff --git a/bezel/koko-aio/monitor-BASE.slangp b/bezel/koko-aio/monitor-BASE.slangp new file mode 100644 index 0000000..28e56d7 --- /dev/null +++ b/bezel/koko-aio/monitor-BASE.slangp @@ -0,0 +1,238 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.150000" +GEOM_WARP_Y = "0.150000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp b/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp new file mode 100644 index 0000000..3a03df9 --- /dev/null +++ b/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp @@ -0,0 +1,257 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "1.200000" +GEOM_WARP_Y = "1.000001" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_R = "0.020000" +BEZEL_G = "0.000000" +BEZEL_B = "-0.020000" +BEZEL_CON = "1.280000" +BEZEL_INNER_ZOOM = "-0.450000" +BEZEL_FRAME_ZOOM = "-0.190000" +BEZEL_IMAGE_BORDER = "1.030000" +DO_BG_IMAGE = "1.000000" +BG_IMAGE_OVER = "1.000000" +BG_IMAGE_OFFX = "0.002000" +BG_IMAGE_OFFY = "0.005000" +BG_IMAGE_ZOOM = "1.091004" +DO_AMBILIGHT = "0.000000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.000000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +S_SIZE = "0.640000" +S_POWER = "0.250000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-Commodore_1084S.slangp b/bezel/koko-aio/monitor-Commodore_1084S.slangp new file mode 100644 index 0000000..3af92ef --- /dev/null +++ b/bezel/koko-aio/monitor-Commodore_1084S.slangp @@ -0,0 +1,255 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "1.400000" +GEOM_WARP_Y = "1.600000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_R = "0.030000" +BEZEL_G = "0.000000" +BEZEL_B = "-0.030000" +BEZEL_INNER_ZOOM = "-0.590000" +BEZEL_FRAME_ZOOM = "-0.300000" +BEZEL_IMAGE_BORDER = "1.040000" +DO_BG_IMAGE = "1.000000" +BG_IMAGE_OVER = "1.000000" +BG_IMAGE_OFFX = "0.001000" +BG_IMAGE_OFFY = "0.006000" +DO_AMBILIGHT = "0.000000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.000000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +S_SIZE = "0.640000" +S_POWER = "0.250000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-bloom-bezel.slangp b/bezel/koko-aio/monitor-bloom-bezel.slangp new file mode 100644 index 0000000..ea8462b --- /dev/null +++ b/bezel/koko-aio/monitor-bloom-bezel.slangp @@ -0,0 +1,244 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.000000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-bloom-bezelwider.slangp b/bezel/koko-aio/monitor-bloom-bezelwider.slangp new file mode 100644 index 0000000..c675452 --- /dev/null +++ b/bezel/koko-aio/monitor-bloom-bezelwider.slangp @@ -0,0 +1,245 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-bloom.slangp b/bezel/koko-aio/monitor-bloom.slangp new file mode 100644 index 0000000..3b014b8 --- /dev/null +++ b/bezel/koko-aio/monitor-bloom.slangp @@ -0,0 +1,239 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.150000" +GEOM_WARP_Y = "0.150000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp new file mode 100644 index 0000000..e2a45c0 --- /dev/null +++ b/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp @@ -0,0 +1,246 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +DO_BG_IMAGE = "1.000000" +AMBI_STEPS = "5.000000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp new file mode 100644 index 0000000..c2fa67f --- /dev/null +++ b/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp @@ -0,0 +1,244 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp new file mode 100644 index 0000000..7aad58f --- /dev/null +++ b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp @@ -0,0 +1,245 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-slotmask-bloom.slangp b/bezel/koko-aio/monitor-slotmask-bloom.slangp new file mode 100644 index 0000000..a61447f --- /dev/null +++ b/bezel/koko-aio/monitor-slotmask-bloom.slangp @@ -0,0 +1,239 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.150000" +GEOM_WARP_Y = "0.150000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/monitor-slotmask.slangp b/bezel/koko-aio/monitor-slotmask.slangp new file mode 100644 index 0000000..422f468 --- /dev/null +++ b/bezel/koko-aio/monitor-slotmask.slangp @@ -0,0 +1,238 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +GAMMA_OUT = "0.500000" +DO_SHIFT_RGB = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "7.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINES_BLEEDING = "0.825000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.150000" +GEOM_WARP_Y = "0.150000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/shaders/ambi_pre_pass.slang b/bezel/koko-aio/shaders/ambi_pre_pass.slang new file mode 100644 index 0000000..9e34e06 --- /dev/null +++ b/bezel/koko-aio/shaders/ambi_pre_pass.slang @@ -0,0 +1,129 @@ +#version 450 + +/* This pass simulates the presence of a led strip placed on the back of the virtual screen */ + +#include "config.inc" + +#define internalness 0.07 //The distance between the screen border and the led strip +#define leds_per_strip 8 //How many leds per border + +#define radius 0.001 //The base radius of the emitted light (tuned by user parameter later) + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out float border_min; +layout(location = 2) out float border_max; +layout(location = 3) out float fstep; +layout(location = 4) out float lod; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + + border_min=internalness ; + border_max=1.0-internalness ; + fstep = (border_max - border_min) / (leds_per_strip-1); + //Calc a lod for a texture sized led_strip x led_strip + lod = log2(params.SourceSize.y / leds_per_strip); +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in float border_min; +layout(location = 2) in float border_max; +layout(location = 3) in float fstep; +layout(location = 4) in float lod; + +layout(location = 0) out vec4 FragColor; + + +layout(set = 0, binding = 2) uniform sampler2D Source; +layout(set = 0, binding = 3) uniform sampler2D isrotated_passFeedback; +layout(set = 0, binding = 4) uniform sampler2D ambi_pre_pass1Feedback; + + +#include "includes/functions.include.slang" + +vec3 circle_smooth(vec2 coords, vec2 middle, float f_radius, float FALLOFF, float f_lod) { + float fdistance=distance(middle, vec2(coords.x, coords.y)); + float circle = (1-smoothstep(f_radius-FALLOFF, f_radius+FALLOFF, fdistance)); + vec3 circle_color = textureLod(Source, middle, f_lod).rgb * circle; + return circle_color; +} + +#define tol_start 0.06 //skip tolerance +#define tol_end 0.94 //1-tol_start + + +/* + To spare gpu cycles, completely skip the pass + by the following factor and return instead the previous + (temporal) frame. The trick works because the pass is + temporal smoothed later on. + + The only downside is that the leds will have less reaction time. + Esample: + a FRAME_DIVIDER = 3 over a 60hz content will give + a minimum reaction time of 60/3=20Hz=50msecs. +*/ + +#define FRAME_DIVIDER 3 + +void main() { + if (DO_AMBILIGHT != 1.0) return; + + if ( mod(params.FrameCount, FRAME_DIVIDER) != 0.0) { + FragColor = texture(ambi_pre_pass1Feedback, vTexCoord); + return; + } + + bool is_rotated = texture(isrotated_passFeedback, vec2(0.5, 0.5)).r > 0.5; + + //Scale to the original aspect + vec2 coords = get_scaled_coords(vTexCoord, global.FinalViewportSize, is_rotated); + if (DO_BEZEL==1.0) coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0); + + //Skip coords in the rect "under the monitor" + FragColor = vec4(0.0); + + //First consider to skip the curved coords + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) { + vec2 coords_curved = Warp(coords, GEOM_WARP_X, GEOM_WARP_Y); + if ( ( (coords_curved.x > tol_start && coords_curved.x < 1.0 - tol_start ) && (coords_curved.y > tol_start && coords_curved.y < 1.0 - tol_start) ) && + !( (coords.x < - tol_start || coords.x > 1.0 + tol_start) || (coords.y < - tol_start || coords.y > 1.0 + tol_start) ) ) + return; + } + } + //...next, the straight ones (needed even when curvature is due, because it returns particular values in the corners) + //skip_pass = skip_pass && !( (coords.x < 0.0 -tol || coords.x > 1.0 +tol) || (coords.y < 0.0 -tol || coords.y > 1.0 +tol) ); + if (coords.x > tol_start && coords.x < tol_end && coords.y > tol_start && coords.y < tol_end) return; + + //Finally, emulate leds. + vec3 pixel_out = vec3(0.0); + float middle_x; float middle_y ; + + middle_x=border_min; + for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) { + pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod); + } + middle_x=border_max; + for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) { + pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod); + } + + middle_y=border_min; + for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) { + pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod); + } + middle_y=border_max; + for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) { + pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod); + } + + FragColor = vec4(pixel_out,1.0); + return; + +} diff --git a/bezel/koko-aio/shaders/ambi_push_pass.slang b/bezel/koko-aio/shaders/ambi_push_pass.slang new file mode 100644 index 0000000..cafd9b6 --- /dev/null +++ b/bezel/koko-aio/shaders/ambi_push_pass.slang @@ -0,0 +1,34 @@ +#version 450 + +/* This pass apply an pre-gain to the leds on the rear of the virtual screen + * it is intended to produce a mipmap to be used by the next pass */ + + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D first_pass; +layout(set = 0, binding = 3) uniform sampler2D avglum_pass; + +#include "includes/functions.include.slang" + +void main() { + if (DO_AMBILIGHT != 1.0) return; + + vec3 pixel_out = texture(first_pass, vTexCoord).rgb; + pixel_out = apply_fuzzy_main_pass(pixel_out); + pixel_out = pixel_push_luminance(pixel_out, AMBI_POWER-1); + FragColor = vec4(pixel_out, 1.0); +} diff --git a/bezel/koko-aio/shaders/ambi_temporal_pass.slang b/bezel/koko-aio/shaders/ambi_temporal_pass.slang new file mode 100644 index 0000000..cc29c87 --- /dev/null +++ b/bezel/koko-aio/shaders/ambi_temporal_pass.slang @@ -0,0 +1,84 @@ +#version 450 + +/* In this pass the led light is temporally smoothed to give smooth fades. + * the slowness is configurable by user parameter. + * It also detect when a full scene is changed to produces fast fades, instead + */ + +#include "config.inc" + +#define PreviousSampler ambi_temporal_passFeedback +#define CurrentSampler ambi_pre_pass1 + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D CurrentSampler; +layout(set = 0, binding = 3) uniform sampler2D PreviousSampler; +layout(set = 0, binding = 4) uniform sampler2D avglum_pass; +layout(set = 0, binding = 5) uniform sampler2D avglum_passFeedback; + +#define MAX_STEPS AMBI_STEPS + +float ambi_step(float start, float end, float mystep) { + float diff = start-end; + if (abs(diff) < mystep) return end; + if (start >= end) + return start - mystep; + else + return start + mystep; +} + +vec3 ambi_step_rgb(vec3 s,vec3 d, vec3 mystep){ + //step fade (f) rom s to d + return vec3 ( ambi_step(s.r,d.r,mystep.r), + ambi_step(s.g,d.g,mystep.g), + ambi_step(s.b,d.b,mystep.b) + ); +} + + +vec4 pixel_ambilight() { + vec3 mystep; + + vec4 previous_pixel_vec4 = texture(PreviousSampler, vTexCoord); + vec3 current_pixel = texture(CurrentSampler, vTexCoord).rgb; + vec3 previous_pixel = previous_pixel_vec4.rgb; + + float scene_change_remaining = previous_pixel_vec4.a; + + float prev_avg_lum = texture(avglum_passFeedback,vec2(0.25,0.25)).a; + float curr_avg_lum = texture(avglum_pass ,vec2(0.25,0.25)).a; + float diff_avg_lum = abs(prev_avg_lum - curr_avg_lum); + + if (diff_avg_lum >= AMBI_SCENE_CHG_THRSHLD) { + scene_change_remaining = 1.0; + } + + // Are we changing scene? + if (scene_change_remaining > 0.0) { + mystep = vec3(max(1.0/MAX_STEPS, AMBI_FAST_STEP)); // <- Never slow down fades due to fast step when changing scene + scene_change_remaining -= AMBI_FAST_STEP; + } else { + mystep = abs((previous_pixel-current_pixel) / MAX_STEPS); + + } + return vec4(ambi_step_rgb(previous_pixel,current_pixel,mystep),scene_change_remaining); + +} + +void main() { + if (DO_AMBILIGHT != 1.0) return; + + FragColor = pixel_ambilight(); +} diff --git a/bezel/koko-aio/shaders/avglum_pass.slang b/bezel/koko-aio/shaders/avglum_pass.slang new file mode 100644 index 0000000..75fddb9 --- /dev/null +++ b/bezel/koko-aio/shaders/avglum_pass.slang @@ -0,0 +1,81 @@ +#version 450 + +/* In this pass we calculate the average luminance of the scene. + * It is cheaply obtained by the use of mipmaps. */ + +#include "config.inc" + +//The mipmap wideness needed by the reflection on the bezel. +#define min_w 16 + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out float lod; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + lod = log2(params.SourceSize.y / min_w); +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in float lod; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D first_pass; +layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback; + +/* The following will allow to sample at reduced interval + The scene change detection logic will take advantage of it + So that quick fades will still be treated as scene changes +*/ +// #define avglum_divider 4 <-- in config.inc + +#include "includes/functions.include.slang" + +float get_avg_lum_from_mip() { + vec3 mip = textureLod(first_pass, vec2(0.5,0.5),20.0).rgb; + mip = apply_fuzzy_main_pass(mip); + return (mip.r+mip.g+mip.b)/3.0; +} + +float get_avglum() { + bool coordinate_for_scene_detection = + vTexCoord.x > 0.24 && vTexCoord.x < 0.26 && + vTexCoord.y > 0.24 && vTexCoord.y < 0.26 ; + + bool reduced_sample_time_is_now = (mod(params.FrameCount,AMBI_AVGLUM_DIVIDER) == 0); + + if (!coordinate_for_scene_detection) return get_avg_lum_from_mip(); + if (reduced_sample_time_is_now) return get_avg_lum_from_mip(); + if (coordinate_for_scene_detection && reduced_sample_time_is_now) return get_avg_lum_from_mip(); + + /* Implicit else: we are in a coordinate that is not used for scene detection + * So just return the feedback of this pass to spare gpu cycles. */ + return texture(avglum_passFeedback,vTexCoord).a; +} + +void main() { + /*Grab a mipmap from the previous pass. + Calculate the average luminance from the smallest mipmap and put into the alpha channel + So that can be used: + 1 - continuously at coordinate 0.5,0.5 + 2 - sampled less often for scene detection logic at coordinate 0.25,0.25 + Put another small mipmap into the rgb channel to be used by the reflection code. + */ + //FIXME: see which is faster: + //if (DO_AMBILIGHT == 1.0 || DO_BEZEL == 1.0 || DO_DYNZOOM == 1.0) { + if ( DO_AMBILIGHT + DO_BEZEL + DO_DYNZOOM + DO_BLOOM == 0 ) return; + + vec4 pixel_out; + pixel_out.a = get_avglum(); + if (DO_BEZEL + DO_BLOOM > 0.0) { + //Create a small mipmap to be used to light the bezel corners. + pixel_out.rgb = textureLod(first_pass, vTexCoord,lod).rgb; + } + FragColor = pixel_out; + + +} diff --git a/bezel/koko-aio/shaders/bloom_pass_1.slang b/bezel/koko-aio/shaders/bloom_pass_1.slang new file mode 100644 index 0000000..ad87e59 --- /dev/null +++ b/bezel/koko-aio/shaders/bloom_pass_1.slang @@ -0,0 +1,43 @@ +#version 450 + +// This is one of several passes needed to cheaply emulate the bloom effect. + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D first_pass; + +#include "includes/blooms.include.slang" +#include "includes/functions.include.slang" + +void main() { + if (DO_BLOOM == 0.0) return; + + vec3 bloomed = bloom( + first_pass, + vTexCoord, + params.OriginalSize, + vec2(BLOOM_SIZE), + BLOOM_QUALITY, + BLOOM_GAMMA, + 0.0, + 0.0 + ); + + bloomed = apply_fuzzy_main_pass(bloomed) * BLOOM_POWER; + FragColor = vec4(bloomed, 1.0); + +} diff --git a/bezel/koko-aio/shaders/bloom_pass_2.slang b/bezel/koko-aio/shaders/bloom_pass_2.slang new file mode 100644 index 0000000..d8c563a --- /dev/null +++ b/bezel/koko-aio/shaders/bloom_pass_2.slang @@ -0,0 +1,40 @@ +#version 450 + +// This is one of several passes needed to cheaply emulate the bloom effect. + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "includes/blooms.include.slang" + +void main() { + if (DO_BLOOM == 0.0) return; + + vec3 bloomed = bloom( + Source, + vTexCoord, + params.SourceSize, + vec2(BLOOM_SIZE), + BLOOM_QUALITY, + 1.0, + 0.196349540625, + 0.0 + ); + + FragColor = vec4(bloomed.rgb, 1.0); +} diff --git a/bezel/koko-aio/shaders/bloom_pass_3.slang b/bezel/koko-aio/shaders/bloom_pass_3.slang new file mode 100644 index 0000000..fab94b8 --- /dev/null +++ b/bezel/koko-aio/shaders/bloom_pass_3.slang @@ -0,0 +1,41 @@ +#version 450 + +// This is one of several passes needed to cheaply emulate the bloom effect. + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "includes/blooms.include.slang" + +void main() { + if (DO_BLOOM == 0.0) return; + + vec3 bloomed = bloom( + Source, + vTexCoord, + params.SourceSize, + vec2(BLOOM_SIZE), + BLOOM_QUALITY, + 1.0, + 0.39269908125, + 0.0 + ); + + FragColor = vec4(bloomed.rgb, 1.0); + +} diff --git a/bezel/koko-aio/shaders/bloom_pass_4.slang b/bezel/koko-aio/shaders/bloom_pass_4.slang new file mode 100644 index 0000000..0cd939e --- /dev/null +++ b/bezel/koko-aio/shaders/bloom_pass_4.slang @@ -0,0 +1,41 @@ +#version 450 + +// This is one of several passes needed to cheaply emulate the bloom effect. + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "includes/blooms.include.slang" + +void main() { + if (DO_BLOOM == 0.0) return; + + vec3 bloomed = bloom( + Source, + vTexCoord, + params.SourceSize, + vec2(BLOOM_SIZE), + BLOOM_QUALITY, + 1.0, + 0.589048621875, + 0.0 + ); + + FragColor = vec4(pow(bloomed,vec3(BLOOM_GAMMA_OUT)),1.0); + +} diff --git a/bezel/koko-aio/shaders/config.inc b/bezel/koko-aio/shaders/config.inc new file mode 100644 index 0000000..1c4c893 --- /dev/null +++ b/bezel/koko-aio/shaders/config.inc @@ -0,0 +1,490 @@ + //Setting the glow/halo sharpness parameter to this + //will skip the blurring phase and lowers the gpu use + //Set this to the same value as used for the maximum + //of IN_GLOW_WH, HALO_W and HALO_H +#define GLOW_SHARP_MAX 7 + + //Consider content interlaced if lines are more than this +#define MIN_LINES_INTERLACED 300 + +//Sort of dithering used in vignette, spot, backlight leds + #define NOISEPOWER ((params.OutputSize.z)*3) + + //Bezel reflection area size in relation to the game frame + //Use the lowest possible value for best performance + //It is also used to compute wrap/repeated coordinates. +#define BEZEL_REFLECTION_AREA_SIZE 0.175 + + // 0.0-1.0: sensitivity to scene change (ambilike stuff), 0.0 changes more +#define AMBI_SCENE_CHG_THRSHLD 0.07 + + // The following will allow to sample at reduced interval + // The scene change detection logic will take advantage of it + // So that quick fades will still be treated as scene changes +#define AMBI_AVGLUM_DIVIDER 4 + + // The following defines the speed of the color fades + // when changing scene. (range 0..1) + // It is wise to correlate it with avglum_divider + // try between (1/avglum_divider) and (1/avglum_divider)/3 +#define AMBI_FAST_STEP 0.125 + + +#define eps 1e-5 + +layout(push_constant) uniform Push { + vec4 SourceSize; + vec4 OriginalSize; + vec4 OutputSize; + vec4 final_passSize; + uint FrameCount; + + float SCANLINE_DARK; + float VMASK_OVERWHITE ; + float VMASK_DARKLINE_SCALE; + float VMASK_GAP; + float VMASK_USE_GM; + float DRKLN_OVERWHITE ; + float DO_DARKLINES_VOFFSET ; + float DARKLINES_PERIOD ; + float HALO_W ; + float HALO_H ; + float HALO_POWER ; + float HALO_GAMMA ; + float DO_BLOOM ; //4 + float BLOOM_QUALITY ; //1 + +} params; + +layout(std140, set = 0, binding = 0) uniform UBO { + mat4 MVP; + + vec4 FinalViewportSize; + vec4 in_glow_passSize; + vec4 FXAA_passSize; + //vec4 main_passSize; + //vec4 monitor_bodySize; + //vec4 bgSize; + vec4 avglum_passSize; + vec4 first_passSize; + + float DO_SCANLINES; + float DO_IN_GLOW; + float DO_VMASK_AND_DARKLINES ; + float MASK_COMPENSATION ; + float DO_HALO ; + float DO_CCORRECTION; + float DO_ALT_BLANK; + //float IN_GLOW_ADD ; + float SCANLINES_BLEEDING ; + float IN_GLOW_WH ; + float IN_GLOW_POWER ; + float IN_GLOW_GAMMA ; + float BLOOM_MIX; + float BLOOM_SIZE ; //1 + float BLOOM_GAMMA; //1 + float BLOOM_BYPASS; //1 + float BLOOM_POWER; //1 + float BLOOM_OVER_WHITE; + float BLOOM_GAMMA_OUT; + float ALT_BLANK_STRENGTH ; //2 FIXME to 1 + float ALT_BLANK_PERIOD ; + float DO_FXAA ; //1 + float DO_SAT_BLEED; + float SAT_BLEED_SIZE_LEFT; + float SAT_BLEED_SIZE_RIGHT; + float SAT_BLEED_FALLOFF; + float SAT_BLEED_STRENGTH; + float SAT_BLEED_PAL; + float SCANLINE_FLICKERING ; //2 + float SCANLINE_FLICKERING_POWER; + float SCANLINE_DISABLE_ON_INTERLACE; + float SCANLINE_COMPENSATION; + float RGB_MASK_STRENGTH; + float DARKLINES_STRENGTH; + float GAMMA_OUT ; //1 + float SATURATION; + float LUMINANCE; + float CONTRAST; + float BRIGHTNESS; + float TEMPERATURE; + + float DO_CURVATURE; + + float GEOM_WARP_X; + float GEOM_WARP_Y; + float GEOM_CORNER_SIZE; + float GEOM_CORNER_SMOOTH; + + float DO_BEZEL; + float BEZEL_R; + float BEZEL_G; + float BEZEL_B; + float BEZEL_CON; + float BEZEL_INNER_ZOOM; + float BEZEL_IMAGE_BORDER; + float BEZEL_FRAME_ZOOM; + + float DO_SPOT; + float S_POSITION; + float S_SIZE; + float S_POWER; + float S_BYPASS; + + float DO_VIGNETTE; + float V_SIZE; + float V_POWER; + float V_BYPASS; + + float DO_DYNZOOM; + float DYNZOOM_FACTOR; + + float DO_AMBILIGHT; + float AMBI_FALLOFF; + float AMBI_POWER; + float ASPECT_X; + float ASPECT_Y; + float AMBI_STEPS; + + float DO_BG_IMAGE; + float BG_IMAGE_OVER; + float BG_IMAGE_OFFY; + float BG_IMAGE_OFFX; + float BG_IMAGE_ZOOM; + + float DO_SHIFT_RGB; + float SHIFT_R; + float SHIFT_G; + float SHIFT_B; + float OFFSET_STRENGTH; + +} global; + +// Color correction +#pragma parameter DO_CCORRECTION "★ Color corrections enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter LUMINANCE " Luminance push (>1.0=clip)" 0.0 0.0 1.5 0.05 +#pragma parameter SATURATION " Saturation in (1.0=off)" 1.0 0.0 2.0 0.01 +#pragma parameter CONTRAST " Contrast in (0.0=off)" 0.0 -1.0 1.0 0.01 +#pragma parameter BRIGHTNESS " Brightness in (0.0=off)" 0.0 -1.0 1.0 0.01 +#pragma parameter TEMPERATURE " Temperature in (6500=off)" 6500.0 3000 10000.0 50.0 +#pragma parameter GAMMA_OUT " Gamma out" 0.69 0.1 9.0 0.025 + +// FXAA +// Apply an antialiasing filter via FXAA from Nvidia. +#pragma parameter DO_FXAA "★ FXAA enable? ==>" 0.0 0.0 1.0 1.0 + +//Offset RGB +// Allow to shift Red, Green, Blue components along x and y axis +#pragma parameter DO_SHIFT_RGB "★ Shift RGB components enable? (bad with FXAA) ==>" 0.0 0.0 1.0 1.0 +#pragma parameter OFFSET_STRENGTH " Strength" 0.5 0.0 1.0 0.1 +#pragma parameter SHIFT_R " Red offset" -40.0 -210.0 189.0 1 +#pragma parameter SHIFT_G " Green offset" 40.0 -210.0 189.0 1 +#pragma parameter SHIFT_B " Blue offset" 3.0 -210.0 189.0 1 + + +// YIQ/YUV bandwidth limited chroma bleeding. +#pragma parameter DO_SAT_BLEED "★ Bandwidth limited chroma bleeding enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter SAT_BLEED_PAL " Use PAL colorspace, not NTSC" 0.0 0.0 1.0 1.0 +#pragma parameter SAT_BLEED_STRENGTH " Strength" 1.0 0.0 5.0 0.01 +#pragma parameter SAT_BLEED_SIZE_LEFT " Size Left" 5.0 1.0 40.0 1.0 +#pragma parameter SAT_BLEED_SIZE_RIGHT " Size Right" 5.0 1.0 40.0 1.0 +#pragma parameter SAT_BLEED_FALLOFF " Falloff" 1.7 1.0 2.0 0.01 + + +// Input glowing +// Emulates the glowing of the input signal by blurring it with "IN_GLOW_WH" sharpness. +// Apply a gamma filter "IN_GLOW_GAMMA" to "light" it, multiplying the result by "IN_GLOW_POWER" and +// finally interpolating(*) it with the source image. +// "IN_GLOW_ADD" allows to modulate from interpolation(*) to a sum, wihch may (or not) produce better effects. +// With "IN_GLOW_ADD=0" input glowing does not alter the RGB mask +// or slot mask applied to the image. +#pragma parameter DO_IN_GLOW "★ Glowing Input/power enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter IN_GLOW_POWER " Input signal glow strength" 0.45 0.0 5.0 0.05 +#pragma parameter IN_GLOW_WH " Sharpness" 2.5 0.2 7.0 0.05 +#pragma parameter IN_GLOW_GAMMA " Gamma, the higher, the less the glow on dark colors" 1.0 1.0 10.0 0.1 +//#pragma parameter IN_GLOW_ADD " Post gain (0.0 to disable)" 0.0 0.0 1.0 0.05 + + +// RGB Mask +// Emulates CRT RGB phosphors. +// This is done by multiplying the source image pixels, in turn, by red green or blue. +// The strenght of the multiplication, and so of the final effect is affected by "RGB_MASK_STRENGTH" value. +// A Value of 0 completely disable the effect. +// "VMASK_DARKLINE_SCALE" Scales the gaps, the width the mask, and the height of the rgm bask and darklines (for HiDPI). +// "VMASK_GAP" Will draw an horizontal gap between triads, for HiDPI monitors. +// "VMASK_USE_GM" exploit the rgb subpixel layout of the real monitor to higher the apparent RGB vmask resolution +// "VMASK_OVERWHITE" modulates the strenght of the effect depending on the source pixel brightness, +// This is handy if you want to keep a good image contrast/brightness, but keep in mind that other +// parameters like haloing and bloom. + +// Aperture grille/slot mask (shadow mask not implemented) are handled via *DARKLINES* +// Draw darklines on screen coordinates, by mixing black pixels with the source image +// on final viewport coordinates. +// "DARKLINES_STRENGTH" expresses the final strenght of the effect. +// if "DO_DARKLINES_VOFFSET" is 0, straight horizontal black lines will be painted that emulates an aperture grille. +// "DARKLINES_PERIOD" expresses every how many lines draw a black one (or the height ov the RGB triads) +// "DO_DARKLINES_VOFFSET" lets you to vertically offset by ""DARKLINES_PERIOD/2" the lines every 3 screen pixels, +// allowing, in conjunction with RGB mask, to emulate slot mask +// MASK_COMPENSATION will, where possible, compensate for the loss of brightness by smartly pushing the source luminance + +#pragma parameter DO_VMASK_AND_DARKLINES "★ RGB Masks and/or Darklines enable? ==>" 0.0 0.0 1.0 1.0 + +#pragma parameter MASK_COMPENSATION " Compensate for brightness loss" 0.0 0.0 1.0 0.05 + +#pragma parameter VMASK_DARKLINE_SCALE " (HiDPI) Vmask and Darklines multiplier" 1.0 1.0 4.0 1.0 +#pragma parameter RGB_MASK_STRENGTH " Vmask Strength (0.0 to disable)" 0.75 0.0 1.0 0.05 +#pragma parameter VMASK_USE_GM " RGB Mask: (LoDPI) Green,Magenta -> BGR" 0.0 0.0 1.0 1.0 +#pragma parameter VMASK_GAP " RGB Mask: Horizontal Gap between triads" 0.0 0.0 1.0 1.0 +#pragma parameter VMASK_OVERWHITE " RGB Mask: affect bright colors" 1.0 0.0 1.0 0.05 + +#pragma parameter DARKLINES_STRENGTH " Darklines: strength (0.0 to disable)" 0.65 0.0 1.0 0.05 +#pragma parameter DO_DARKLINES_VOFFSET " Darklines: offset by triads" 1.0 0.0 1.0 1.0 +#pragma parameter DARKLINES_PERIOD " Darklines: period (triad height)" 4.0 2.0 16.0 2.0 +#pragma parameter DRKLN_OVERWHITE " Darklines: affect bright colors" 1.0 0.0 1.0 0.05 + + +// Halo +// The parameters are the same as input glowing, but this time the effect is applie +// after emulating the RGB phosphors the aperture grille or the slot masks and, instead of +// multiplying the resulting picture by the source one, it is added. +// this means that haloing will produce solid colors, +// lessening afromentioned effects on bright colors. +#pragma parameter DO_HALO "★ Halo enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter HALO_POWER " Strength" 0.9 0.0 5.0 0.025 +#pragma parameter HALO_W " Horizontal sharpness" 1.75 0.2 7.0 0.05 +#pragma parameter HALO_H " Vertical sharpness" 1.75 0.2 7.0 0.05 +#pragma parameter HALO_GAMMA " Gamma, the higher, the less the halo on dark colors" 2.0 1.0 10.0 0.1 + + +// Scanlines +// Blank even source lines, the value from 0.0 to 1.0 expresses the darkness of the blanked lines +// 1.0 means no blank at all. +// SCANLINE_DARK controls the gap brightness +// SCANLINE_COMPENSATION will make scanlines brighter, where possible, to compensate for the loss of brightness +// SCANLINE_BLEEDING will make the whiter part of the scanline to bright the gap. + +#pragma parameter DO_SCANLINES "★ Scanlines enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter SCANLINE_DARK " Scanlines gap brightness" 0.0 -0.5 1.0 0.05 +#pragma parameter SCANLINE_COMPENSATION " Compensate for brightness loss" 0.0 0.0 1.0 0.1 +#pragma parameter SCANLINES_BLEEDING " Scanlines bleeding" 0.0 0.0 3.0 0.05 + +// Alternate the drawing of the scanlines between frames. this will produce a flickering typical of +// interlaced screens; 0 disable the effect, 1 always enables it, 2 enables it only when +// the shader detects an interlaced signal, which actually means that the vertical resoution is "high enough" +#pragma parameter SCANLINE_FLICKERING " Interlace Flicker (0=off,1=on,2=if interlaced)" 2.0 0.0 2.0 1.0 +#pragma parameter SCANLINE_FLICKERING_POWER " Interlace Flicker power" 0.75 0.0 4.0 0.1 + +#pragma parameter SCANLINE_DISABLE_ON_INTERLACE " Disable on interlaced screen" 0.0 0.0 1.0 1.0 + + +// Bloom +// The image is downsampled, bloomed and mixed back with the original image. +// "BLOOM_MIX" is the final mix strength +// "BLOOM_SIZE" is the radius of the blurred image +// "BLOOM_QUALITY" express a tradeoff between quality and effect speed. +// "BLOOM_GAMMA" allows to apply more bloom on the bright colors of the source image +// "BLOOM_POWER" is the additional gain applied to the bloom +// "BLOOM_BYPASS" will show only the bloomed component +// the original image. +#pragma parameter DO_BLOOM "★ Bloom enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter BLOOM_MIX " Final mix, (0.0=off)" 0.2 0.0 1.0 0.01 +#pragma parameter BLOOM_SIZE " Radius" 2.0 0.25 30.0 0.25 +#pragma parameter BLOOM_QUALITY " Quality: more is better but slower" 1.0 1.0 32.0 1.0 +#pragma parameter BLOOM_GAMMA " Input Gamma" 10.0 1.0 10.0 0.1 +#pragma parameter BLOOM_POWER " Power multiplier" 10.0 1.0 100.0 0.5 +#pragma parameter BLOOM_GAMMA_OUT " Output Gamma" 10.0 0.1 10.0 0.1 +#pragma parameter BLOOM_OVER_WHITE " Strength on bright areas (0 = aura)" 0.5 0.0 1.0 0.05 +#pragma parameter BLOOM_BYPASS " Bypass" 0.0 0.0 1.0 1.0 + +//Curvature parameters: +#pragma parameter DO_CURVATURE "★ Curvature enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter GEOM_WARP_X " Warp X" 0.3 0.0 6.0 0.05 +#pragma parameter GEOM_WARP_Y " Warp Y" 0.0 0.0 6.0 0.05 +#pragma parameter GEOM_CORNER_SIZE " Corner radius" 0.01 0.01 0.1 0.005 +#pragma parameter GEOM_CORNER_SMOOTH " Corner sharpness" 350.0 50.0 1000.0 25.0 + +//Bezel related +#pragma parameter DO_BEZEL "★ Bezel enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter BEZEL_R " Bezel color: Red" -0.3 -0.5 0.5 0.01 +#pragma parameter BEZEL_G " Bezel color: Green" -0.3 -0.5 0.5 0.01 +#pragma parameter BEZEL_B " Bezel color: Blue" -0.3 -0.5 0.5 0.01 +#pragma parameter BEZEL_CON " Bezel Contrast" 1.3 0.0 10.0 0.01 +#pragma parameter BEZEL_INNER_ZOOM " Image zoom" -0.18 -1.5 0.5 0.01 +#pragma parameter BEZEL_FRAME_ZOOM " Frame zoom" 0.0 -1.5 0.5 0.01 +#pragma parameter BEZEL_IMAGE_BORDER " Image border" 1.01 1.0 1.2 0.01 + +#pragma parameter DO_BG_IMAGE "★ Backgound image enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter LABEL_WARNING1 " ⚠ RetroArch aspect needs to be set to Full! ⚠" 1.0 1.0 1.0 1.0 +#pragma parameter BG_IMAGE_OVER " Image over content (alpha channel driven)?" 0.0 0.0 1.0 1.0 +#pragma parameter BG_IMAGE_OFFX " Shift Image over X axis" 0.0 -1.0 1.0 0.001 +#pragma parameter BG_IMAGE_OFFY " Shift Image over Y axis" 0.0 -1.0 1.0 0.001 +#pragma parameter BG_IMAGE_ZOOM " Zoom Image" 1.0 -1.0 3.0 0.001 + + +//Back leds +//Emulates leds under the monitor frame that slowly reacts to image contents +#pragma parameter DO_AMBILIGHT "★ Ambient light leds enable? ==> " 1.0 0.0 1.0 1.0 +#pragma parameter LABEL_WARNING3 " ⚠ RetroArch aspect needs to be set to Full! ⚠" 1.0 1.0 1.0 1.0 +#pragma parameter LABEL_WARNING4 " ⚠ Resize the window once if you see glitches! ⚠" 1.0 1.0 1.0 1.0 +#pragma parameter AMBI_STEPS " Slowness" 60.0 5.0 1000.0 5.0 +#pragma parameter AMBI_FALLOFF " Light Falloff" 0.7 0.1 3.0 0.01 +#pragma parameter AMBI_POWER " Led power" 1.5 1.0 7.0 0.05 + + +#pragma parameter label_ar "★ Aspect Ratio " 0.0 0.0 1.0 1.0 +#pragma parameter ASPECT_X " Aspect Ratio Numerator (-x for a preset below)" 0.0 -5.0 256. 1.0 +#pragma parameter ASPECT_Y " Aspect Ratio Denominator" 3.0 0.0 256. 1.0 +#pragma parameter label_aspect_presets " Presets reference list:" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset0 " (0 = MAME 1.33)" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset1 " (-1 = NTSC 1.5)" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset2 " (-2 = PAL 1.25)" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset3 " (-3 = Snes 8/7)" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset4 " (-4 = Megadrive 10/7)" 0.0 0.0 0.0 1.0 +#pragma parameter label_aspect_preset5 " (-5 = Uncorrected)" 0.0 0.0 0.0 1.0 + +//Full screen glowing +//Modulate the image zooming depending on the image luminosity. +//You can lower the effect power through the DYNZOOM_FACTOR parameter. +#pragma parameter DO_DYNZOOM "★ Luminosity dependant zoom enable? ==>" 1.0 0.0 1.0 1.0 +#pragma parameter DYNZOOM_FACTOR " Narrowness" 80.0 30.0 120.0 1.0 + + +//Vignette and spot +//Emulates the vignette effect and/or a light reflection. +#pragma parameter DO_VIGNETTE "★ Vignette enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter V_BYPASS " bypass " 0.0 0.0 1.0 1.0 +#pragma parameter V_SIZE " size" 1.7 0.0 3.0 0.05 +#pragma parameter V_POWER " power" 1.1 0.05 2.0 0.05 + +#pragma parameter DO_SPOT "★ Spot enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter S_BYPASS " bypass" 0.0 0.0 1.0 1.0 +#pragma parameter S_POSITION " Position" 0.0 -420.0 378.0 1 +#pragma parameter S_SIZE " size" 0.4 0.0 1.0 0.01 +#pragma parameter S_POWER " power" 0.1 0.05 2.0 0.05 + + +// Alternative blanking. +// Emulates the low pixel persistance of CRT monitors and reduces the motion blur, +// typical of LCD displays, by blanking even/odd screen lines on even/odd frames. +// ALT_BLANK_STRENGTH expresses the strength of the "blank". +#pragma parameter DO_ALT_BLANK "★ Alternate line blanking enable? ==>" 0.0 0.0 1.0 1.0 +#pragma parameter ALT_BLANK_STRENGTH " Alternate black frame insertion strength" 0.5 0.0 1.0 0.1 +#pragma parameter ALT_BLANK_PERIOD " Dark lines period" 4.0 0.0 20.0 1.0 + + +#define DO_FXAA global.DO_FXAA + +#define DO_SAT_BLEED global.DO_SAT_BLEED +#define SAT_BLEED_SIZE_LEFT global.SAT_BLEED_SIZE_LEFT +#define SAT_BLEED_SIZE_RIGHT global.SAT_BLEED_SIZE_RIGHT +#define SAT_BLEED_FALLOFF global.SAT_BLEED_FALLOFF +#define SAT_BLEED_STRENGTH global.SAT_BLEED_STRENGTH +#define SAT_BLEED_PAL global.SAT_BLEED_PAL +//#define prefer_std_pow params.prefer_std_pow + +#define DO_SCANLINES global.DO_SCANLINES +#define SCANLINE_DARK params.SCANLINE_DARK +#define SCANLINE_OVERWHITE global.SCANLINE_OVERWHITE +#define SCANLINE_FLICKERING global.SCANLINE_FLICKERING +#define SCANLINE_FLICKERING_POWER global.SCANLINE_FLICKERING_POWER +#define SCANLINE_DISABLE_ON_INTERLACE global.SCANLINE_DISABLE_ON_INTERLACE +#define SCANLINE_COMPENSATION global.SCANLINE_COMPENSATION + +#define DO_IN_GLOW global.DO_IN_GLOW +//#define IN_GLOW_ADD global.IN_GLOW_ADD +#define SCANLINES_BLEEDING global.SCANLINES_BLEEDING +#define IN_GLOW_WH global.IN_GLOW_WH +#define IN_GLOW_POWER global.IN_GLOW_POWER +#define IN_GLOW_GAMMA global.IN_GLOW_GAMMA + +#define DO_VMASK_AND_DARKLINES global.DO_VMASK_AND_DARKLINES +#define MASK_COMPENSATION global.MASK_COMPENSATION +#define RGB_MASK_STRENGTH global.RGB_MASK_STRENGTH +#define VMASK_OVERWHITE params.VMASK_OVERWHITE +#define VMASK_DARKLINE_SCALE params.VMASK_DARKLINE_SCALE +#define VMASK_GAP params.VMASK_GAP +#define VMASK_USE_GM params.VMASK_USE_GM + +#define DARKLINES_STRENGTH global.DARKLINES_STRENGTH +#define DRKLN_OVERWHITE params.DRKLN_OVERWHITE +#define DO_DARKLINES_VOFFSET params.DO_DARKLINES_VOFFSET +#define DARKLINES_PERIOD params.DARKLINES_PERIOD + +#define DO_HALO global.DO_HALO +#define HALO_W params.HALO_W +#define HALO_H params.HALO_H +#define HALO_POWER params.HALO_POWER +#define HALO_GAMMA params.HALO_GAMMA + +#define DO_BLOOM params.DO_BLOOM +#define BLOOM_MIX global.BLOOM_MIX +#define BLOOM_QUALITY params.BLOOM_QUALITY +#define BLOOM_SIZE global.BLOOM_SIZE +#define BLOOM_GAMMA global.BLOOM_GAMMA +#define BLOOM_POWER global.BLOOM_POWER +#define BLOOM_GAMMA_OUT global.BLOOM_GAMMA_OUT +#define BLOOM_OVER_WHITE global.BLOOM_OVER_WHITE +#define BLOOM_BYPASS global.BLOOM_BYPASS + + +#define DO_CCORRECTION global.DO_CCORRECTION +#define GAMMA_OUT global.GAMMA_OUT +#define SATURATION global.SATURATION +#define LUMINANCE global.LUMINANCE +#define CONTRAST global.CONTRAST +#define BRIGHTNESS global.BRIGHTNESS +#define TEMPERATURE global.TEMPERATURE + +#define DO_ALT_BLANK global.DO_ALT_BLANK +#define ALT_BLANK_STRENGTH global.ALT_BLANK_STRENGTH +#define ALT_BLANK_PERIOD global.ALT_BLANK_PERIOD + + +#define DO_CURVATURE global.DO_CURVATURE +#define GEOM_WARP_X global.GEOM_WARP_X +#define GEOM_WARP_Y global.GEOM_WARP_Y +#define GEOM_CORNER_SIZE global.GEOM_CORNER_SIZE +#define GEOM_CORNER_SMOOTH global.GEOM_CORNER_SMOOTH + + +#define DO_BEZEL global.DO_BEZEL +#define BEZEL_R global.BEZEL_R +#define BEZEL_G global.BEZEL_G +#define BEZEL_B global.BEZEL_B +#define BEZEL_CON global.BEZEL_CON +#define BEZEL_INNER_ZOOM global.BEZEL_INNER_ZOOM +#define BEZEL_FRAME_ZOOM global.BEZEL_FRAME_ZOOM +#define BEZEL_IMAGE_BORDER global.BEZEL_IMAGE_BORDER + +#define DO_SPOT global.DO_SPOT +#define S_BYPASS global.S_BYPASS +#define S_POSITION global.S_POSITION +#define S_SIZE global.S_SIZE +#define S_POWER global.S_POWER + +#define DO_DYNZOOM global.DO_DYNZOOM +#define DYNZOOM_FACTOR global.DYNZOOM_FACTOR + +#define DO_VIGNETTE global.DO_VIGNETTE +#define V_BYPASS global.V_BYPASS +#define V_SIZE global.V_SIZE +#define V_POWER global.V_POWER + +#define DO_AMBILIGHT global.DO_AMBILIGHT +#define AMBI_STEPS global.AMBI_STEPS +#define AMBI_FALLOFF global.AMBI_FALLOFF +#define AMBI_POWER global.AMBI_POWER +#define ASPECT_X global.ASPECT_X +#define ASPECT_Y global.ASPECT_Y + +#define DO_BG_IMAGE global.DO_BG_IMAGE +#define BG_IMAGE_OVER global.BG_IMAGE_OVER +#define BG_IMAGE_OFFY global.BG_IMAGE_OFFY +#define BG_IMAGE_OFFX global.BG_IMAGE_OFFX +#define BG_IMAGE_ZOOM global.BG_IMAGE_ZOOM + +#define DO_SHIFT_RGB global.DO_SHIFT_RGB +#define SHIFT_R global.SHIFT_R +#define SHIFT_G global.SHIFT_G +#define SHIFT_B global.SHIFT_B +#define OFFSET_STRENGTH global.OFFSET_STRENGTH diff --git a/bezel/koko-aio/shaders/final_pass.slang b/bezel/koko-aio/shaders/final_pass.slang new file mode 100644 index 0000000..07131aa --- /dev/null +++ b/bezel/koko-aio/shaders/final_pass.slang @@ -0,0 +1,556 @@ +#version 450 + +/* This pass: + * Composes the previous passes + * Does masks, spot, bezel, vignette, background image (anything else?) + */ + +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; + + +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; +layout(location = 2) out vec2 spot_offset; +layout(location = 3) out vec2 vFragCoord; + +#include "includes/functions.include.slang" + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, is_rotated())+vec2(0.00001); + vOutputCoord = TexCoord; + + spot_offset = offsets_from_float(S_POSITION+420.0,40); + spot_offset = spot_offset / 10.0 + vec2(0.0,1.0); + + vFragCoord = vec2( floor(vOutputCoord.x * params.OutputSize.x), + floor(vOutputCoord.y * params.OutputSize.y)); +} + + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 2) in vec2 spot_offset; +layout(location = 3) in vec2 vFragCoord; + +layout(location = 0) out vec4 FragColor; + + +layout(set = 0, binding = 2) uniform sampler2D bloom_pass_final; +layout(set = 0, binding = 3) uniform sampler2D reflected_blurred_pass2; +layout(set = 0, binding = 4) uniform sampler2D ambi_temporal_pass; +layout(set = 0, binding = 5) uniform sampler2D avglum_pass; +layout(set = 0, binding = 6) uniform sampler2D monitor_body; +layout(set = 0, binding = 7) uniform sampler2D bg_under; +layout(set = 0, binding = 8) uniform sampler2D bg_over; +layout(set = 0, binding = 9) uniform sampler2D first_pass; +layout(set = 0, binding = 10) uniform sampler2D shift_and_bleed_pass; + +//Ex main_pass layouts: + layout(set = 0, binding = 11) uniform sampler2D FXAA_pass; + layout(set = 0, binding = 12) uniform sampler2D in_glow_pass; + layout(set = 0, binding = 13) uniform sampler2D halo_pass; + layout(set = 0, binding = 14) uniform sampler2D avglum_passFeedback; + +//Ex main_pass defines: + #define half_pi 1.5707963267949 + +#include "includes/functions.include.slang" + +vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) { +// Simple RGB mask emulation with or without horizontal gap + float ooo = 1.0 - RGB_MASK_STRENGTH; + + // RGB mask: R G B + vec3 m1 = vec3( 1.0 , ooo , ooo ); //col 1 + vec3 m2 = vec3( ooo , 1.0 , ooo ); //col 2 + vec3 m3 = vec3( ooo , ooo , 1.0 ); //col 3 + vec3 gap = vec3( ooo ); + + int col = int( vOutputCoord.x * params.OutputSize.x ); + vec3 pixel_out; + vec3 vmasked; + vec4 vec_mod=(vec4(3,1,2,3) + vec4(VMASK_GAP,0.0,0.0,0.0))* VMASK_DARKLINE_SCALE ; + + if (mod(col, vec_mod.x) < vec_mod.y) + vmasked = m1 * source; + else if (mod(col, vec_mod.x) < vec_mod.z) + vmasked = m2 * source; + else if (mod(col, vec_mod.x) < vec_mod.w) + vmasked = m3 * source; + else vmasked = gap * source; + + if (over_white == 1.0) pixel_out = vmasked; + else { + float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b); + whiteness-= over_white; + whiteness= clamp(whiteness,0.0,1.0); + pixel_out= mix(vmasked,source,whiteness); + } + return pixel_out; + +} + + +vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) { +// Simple RGB mask emulation with or without horizontal gap + float ooo = 1.0 - RGB_MASK_STRENGTH; + + // RGB mask: R G B + vec3 m1 = vec3( ooo , 1.0 , ooo ); //col 1 + vec3 m2 = vec3( 1.0 , ooo , 1.0 ); //col 2 + vec3 gap = vec3( ooo ); + + int col = int( vOutputCoord.x * params.OutputSize.x ); + vec3 pixel_out; + vec3 vmasked; + vec3 vec_mod=(vec3(2,1,2) + vec3(VMASK_GAP,0.0,0.0))* VMASK_DARKLINE_SCALE ; + + if (mod(col, vec_mod.x) < vec_mod.y) + vmasked = m1 * source; + else if (mod(col, vec_mod.x) < vec_mod.z) + vmasked = m2 * source; + else + vmasked = gap * source; + + if (over_white == 1.0) pixel_out = vmasked; + else { + float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b); + whiteness-= over_white; + whiteness= clamp(whiteness,0.0,1.0); + pixel_out= mix(vmasked,source,whiteness); + } + + return pixel_out; +} + +vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans, + float do_offset, vec3 white_reference,float over_white) { +/* "darklines" are vertical gaps that can be used to emulate aperturegrille + * or slotmasks + */ + + float Darkline_part_w = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE; + float Darkline_part_w_x2 = Darkline_part_w*2; + + darkline_every *= VMASK_DARKLINE_SCALE; + + if (over_white != 1.0) { + //less effect on bright colors. + float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b); + darkline_trans+=(whiteness-over_white); + darkline_trans=clamp(darkline_trans,0.0,1.0); + } + + //Slotmask (darklines are drawn with offset) + if (do_offset == 1.0) { + bool odd_line_meno_densa = mod(vFragCoord.y, darkline_every) > VMASK_DARKLINE_SCALE ; + bool odd_line_piu_densa = !(mod(vFragCoord.y, darkline_every/2) < VMASK_DARKLINE_SCALE && odd_line_meno_densa); + bool odd_column = mod(vFragCoord.x + Darkline_part_w , Darkline_part_w_x2) < Darkline_part_w; + bool draw_mask = odd_line_piu_densa && !odd_column || odd_column && odd_line_meno_densa; + return source * clamp(float(draw_mask),darkline_trans,1.0); + } + + //Aperture grille (darklines are drawn straight) + bool draw_dark = mod(vFragCoord.y, darkline_every) < VMASK_DARKLINE_SCALE; + bool draw_color = !draw_dark; + return source * ( float(draw_color) + float(draw_dark) * darkline_trans ); +} + +float scanline_shape(vec2 coords, bool do_flicker) { +/* Produces a B/W scanline shape to be multiplicated by the source + * pixel later on to emulate scanline effect. + * scanlines can be drawn on odd and even fields alternating on odd and + * even frames to emulate that aspect of interlacing. + */ + + bool alternate = false; + float period = 1.0; + + if (do_flicker) { + if (params.FrameCount % 2 == 0.0) alternate = true; + if (params.OriginalSize.y > MIN_LINES_INTERLACED ) period = 0.5; + } + + float angle = coords.y * pi * params.OriginalSize.y * period; + + float lines; + if (alternate) + lines = -sin(angle+half_pi); //lines = abs(cos(angle)); + else + lines = sin(angle); + lines = (lines*lines); + + if (SCANLINE_DARK >= 0.0) { + lines = lines * (1.0 - SCANLINE_DARK) + SCANLINE_DARK; + } else { + float deepness = -SCANLINE_DARK; + lines = lines * ((1-SCANLINE_DARK) ) + SCANLINE_DARK ; + } + + return lines; +} + +vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) { + //Exit if we don't need a border (ambient light/background picture) + //And we are outside the the border (unsure if this double check is good for performance) //FIXME + if (bBorder_needed) + if (vTexCoord.x < 0.0 || vTexCoord.x > 1.0 || vTexCoord.y < 0.0 || vTexCoord.y > 1.0) return vec4(0.0); + + bool isinterlaced = is_interlaced(); + bool flickering_scanlines = (DO_SCANLINES == 1.0) && scanline_have_to_flicker(isinterlaced) ; + + vec3 pixel_in; + vec3 pixel_glowed; + + //Get the first available pixel_in: + if (DO_IN_GLOW == 1.0) { + pixel_glowed = texture(in_glow_pass,coords).rgb; + pixel_in = pixel_glowed; } + else if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0) + pixel_in = texture(shift_and_bleed_pass,coords).rgb ; + else if (DO_FXAA > 0.0) + pixel_in = texture(FXAA_pass,coords).rgb ; + else + pixel_in = texture(first_pass,coords).rgb ; + + + vec3 pixel_out = pixel_in; + vec3 pixel_in_clamped = min(pixel_in,vec3(1.0)); //Clamp here for both vmask and darklines. + + //Mask and darklines: + if (DO_VMASK_AND_DARKLINES == 1.0 ) { + vec3 pixel_in_compensated = pixel_in; + + pixel_in_compensated = pixel_push_luminance(pixel_in, RGB_MASK_STRENGTH * MASK_COMPENSATION); + + if (RGB_MASK_STRENGTH > 0.0) { + //Use RGB pattern or exploit RGB layout with green and magenta? + if (VMASK_USE_GM < 1.0) + pixel_out = pixel_vmask(pixel_in_compensated, pixel_in_clamped, VMASK_OVERWHITE); + else + pixel_out = pixel_vmask_gm(pixel_in_compensated, pixel_in_clamped, VMASK_OVERWHITE); + } + + pixel_out = pixel_push_luminance(pixel_out, DARKLINES_STRENGTH * (1.0/DARKLINES_PERIOD) * MASK_COMPENSATION); + + //Screen lines (slotmask aperture grille) + if (DARKLINES_STRENGTH > 0.0 ) { + float MYDARKLINES_TRANSPARENCY = 1.0 - DARKLINES_STRENGTH; + pixel_out = pixel_darklines(pixel_out,DARKLINES_PERIOD,MYDARKLINES_TRANSPARENCY,DO_DARKLINES_VOFFSET,pixel_in_clamped,DRKLN_OVERWHITE); + } + + } + + //Halo + vec3 pixel_haloed; + if (DO_HALO == 1.0 ) { + pixel_haloed = texture(halo_pass,coords).rgb; + pixel_out += pixel_haloed; + } + + /* Non flickering scanlines, Don't do them if + * - User doesn't want scanlines + * - The screen is interlaced and the user doesn't want scanlines on it. + */ + if ( DO_SCANLINES == 1.0 && + !( isinterlaced && SCANLINE_DISABLE_ON_INTERLACE == 1.0 ) + ) { + /* pixel_bleed is the color that will bleed over scanline gap. + * It is selected by the first available one depending on the shader + * features enabled by the user */ + vec3 pixel_bleed; + if (DO_HALO == 1.0) + pixel_bleed = pixel_haloed; + else if (DO_IN_GLOW == 1.0) + pixel_bleed = pixel_glowed; + else + pixel_bleed = pixel_in; + + // Optionally apply a gamma correction to the scanline shape. + if (SCANLINE_COMPENSATION > 0.0) { + float mypow = mix(1.0, (0.33 * SCANLINE_DARK + 0.67), SCANLINE_COMPENSATION); + pixel_out = pow(pixel_out,vec3(mypow)); + } + + float scanline_shape = scanline_shape(coords, flickering_scanlines); + //Obtain the scanlines screen by multiplying the scanline shape by the pixel color. + vec3 pixel_scanlined = pixel_out * scanline_shape; + //Next, emulate the bleeding of the color over the dark part of the scanlined screen. + pixel_out = pixel_scanlined + (pixel_out * pixel_bleed * SCANLINES_BLEEDING * (1-scanline_shape)); + } + + // Apply color correction (in this pass it is just the final output gamma) + if (DO_CCORRECTION == 1.0) pixel_out = pow(pixel_out,vec3(GAMMA_OUT)); + + //Out + return vec4(pixel_out,1.0) ; //* border(border_coords); +} + +float global_noise; + + +vec4 pixel_background_image(bool over){ + //return the aspect corrected background image: + vec2 bg_image_offset=vec2(BG_IMAGE_OFFX,BG_IMAGE_OFFY); + if (over) { + vec2 tex_size = textureSize(bg_over, 0); // * BG_ZOOM; + float bg_over_lod = log2(tex_size.y / global.FinalViewportSize.y); + vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, is_rotated()); + back_coords=zoom(back_coords, BG_IMAGE_ZOOM); + return textureLod(bg_over,back_coords,bg_over_lod); + } + //under + vec2 tex_size = textureSize(bg_under, 0); // * BG_ZOOM; + float bg_under_lod = log2(tex_size.y / global.FinalViewportSize.y); + vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, is_rotated()); + back_coords=zoom(back_coords, BG_IMAGE_ZOOM); + return textureLod(bg_under,back_coords,bg_under_lod); +} + +vec3 pixel_border(bool image_over) { + /* Returns the surrounding of the tube/bezel: + * The led light alone + * the led light "under" a background image (alpha driven) + */ + vec3 pixel_out = vec3(1.0); + if (DO_AMBILIGHT == 1.0) + pixel_out = texture(ambi_temporal_pass, vOutputCoord + global_noise ).rgb; + if (DO_BG_IMAGE == 1.0 && !image_over) { + vec4 bg_image = pixel_background_image(false); + pixel_out = mix(pixel_out,bg_image.rgb,bg_image.a); + } + return pixel_out; +} + + +vec3 pixel_alternate(vec3 source, float whiteness) { + // Emulate the low crt persistance by only drawing odd/even lines + // on odd/even frames + float line = vTexCoord.y * params.OutputSize.y; + vec3 pixel_out = source; + float l_period_half = ALT_BLANK_PERIOD / 2; + if (mod(float(params.FrameCount),2.0 ) == 1) { + if (mod(line,ALT_BLANK_PERIOD) > l_period_half) pixel_out=mix(source,vec3(0), whiteness) ; + } else { + if (mod(line,ALT_BLANK_PERIOD) <= l_period_half) pixel_out=mix(source,vec3(0), whiteness) ; + } + return pixel_out; +} + + +#define bezel_luminance bezel.r +vec3 bezel_color(float lum) { + //Colorize bezel frame + vec3 col = vec3(BEZEL_R,BEZEL_G,BEZEL_B) + lum; + float con_max = 0.5 * BEZEL_CON + 0.5; + + col.r = scale_to_range(col.r, -con_max+1, con_max); //contrast + col.g = scale_to_range(col.g, -con_max+1, con_max); //contrast + col.b = scale_to_range(col.b, -con_max+1, con_max); //contrast + return clamp(col,0.0,1.0); +} + +vec3 compose_bezel_over(vec3 full_viewport) { + vec2 bezel_lut_size = textureSize(monitor_body,0); + float bezel_frame_lod = log2(bezel_lut_size.y * (BEZEL_FRAME_ZOOM+1.0) /global.FinalViewportSize.y); + vec2 coords_for_bezel = vTexCoord; + + if (BEZEL_FRAME_ZOOM != 0.0) + coords_for_bezel = zoomout_coords(vTexCoord,-BEZEL_FRAME_ZOOM,1.0); + + vec2 coords_for_mirror = coords_for_bezel; + //No need to draw anything outside this: + if (coords_for_bezel.x < 0 || coords_for_bezel.y < 0 || coords_for_bezel.x > 1.0 || coords_for_bezel.y > 1.0) return full_viewport; + + //Main lut: + vec4 bezel = textureLod(monitor_body,coords_for_bezel,bezel_frame_lod); + + //No need to draw anything on full alpha: + if (bezel.a == 0.0) return full_viewport; + + //We use the red component of the bezel to express its luminance (define bezel_luminance bezel.r) + vec3 bezel_colored = bezel_color(bezel_luminance); + + //This is the reflection to be composed over the bezel); + vec3 pixel_mirrored = texture(reflected_blurred_pass2, + coords_for_mirror + random( min(global.FinalViewportSize.z,global.FinalViewportSize.w), vTexCoord ) ).rgb; + + //Take the reflection modifier from the texture blue component into account; it is/may be used to lower the reflection in the corners. + //float reflection = (reflection_shade * 1.4 - 0.4) * bezel.b ; + //reflection = clamp (reflection, 0.0, 1.0); + float reflection = bezel.b; + + vec3 bezel_out = bezel_colored + (pixel_mirrored * reflection * 0.5) ; + + //Mix a bit of ambient light over the bezel + vec4 pixel_avglum = texture(avglum_pass,vOutputCoord); + bezel_out = bezel_out + (pixel_avglum.rgb * 0.05); + + //We use the green component to express Hardness/Specularity; there the reflection will be completely diffused. + //For the task, we use a mipmap whit adeguate precision. + float lut_hardness = bezel.g; + if (lut_hardness > 0.0) { + bezel_out = bezel_out + ( ( pixel_avglum.rgb + pixel_avglum.a*0.5) * lut_hardness/3.5); + } + + return mix(full_viewport, bezel_out, bezel.a); +} + +vec4 pixel_inner_frame(vec2 coords, bool bBorder_needed) { +//This takes care of drawing the main content. + + vec4 pixel_in = pixel_main_pass(coords, bBorder_needed); + vec3 pixel_out = pixel_in.rgb; + vec3 bloomed; + + //Mix bloom texture + if (DO_BLOOM == 1.0 ) { + bloomed=texture(bloom_pass_final, coords).rgb ; + if (BLOOM_BYPASS == 1.0) + pixel_out = bloomed; + else { + float over_white_correction = 1.0; + if (BLOOM_OVER_WHITE < 1.0) { + //Use mipmap to identify bright areas. + vec3 avglum = texture(avglum_pass,coords).rgb; + //avglum = apply_fuzzy_main_pass(avglum); + float b_brightness = max(avglum.b,max(avglum.r,avglum.g)); + //b_brightness = max(pixel_out.b,max(pixel_out.r,pixel_out.g)); + + b_brightness *= 1-BLOOM_OVER_WHITE; + over_white_correction =1- b_brightness; + } + + pixel_out = pixel_out + (bloomed * BLOOM_MIX * over_white_correction); + } + } + + //Black frame insertion + if (DO_ALT_BLANK == 1.0 ) { + pixel_out = pixel_alternate(pixel_out.rgb, ALT_BLANK_STRENGTH ); + } + + //vignette and spot + if (DO_VIGNETTE + DO_SPOT >0.0) { + float in_aspect = get_in_aspect(); + + if (DO_VIGNETTE == 1.0) { + float vignette; + float dist = length(vec2((coords.x-0.5)*in_aspect,coords.y-0.5)); + vignette = smoothstep(V_SIZE,0.0,dist)*V_POWER+global_noise; + if (V_BYPASS < 1.0) pixel_out = vignette * clamp(pixel_out,0.0,1.0); + else + pixel_out = vec3(vignette); + } + + if (DO_SPOT == 1.0) { + float spot; + float dist = length(vec2((coords.x-0.5)*in_aspect,coords.y-0.5)+spot_offset); + spot = smoothstep(S_SIZE,0.0,dist)*S_POWER+global_noise; + if (S_BYPASS < 1.0) pixel_out = spot + pixel_out; + else + pixel_out = vec3(spot); + } + } + + //smooth border (edge) + float border_inner_frame = 1.0; + if (DO_BEZEL==1.0 || DO_CURVATURE == 1.0) + border_inner_frame = border(coords); + + float pixel_out_alpha = pixel_in.a * border_inner_frame; + + //Out + return vec4(pixel_out,pixel_out_alpha) * border_inner_frame; +} + + +vec4 main_wrap(vec2 coords){ + /* Handle inner border and outer border, not bezel */ + if (DO_VIGNETTE + DO_SPOT + DO_AMBILIGHT >0.0) global_noise = random(NOISEPOWER, vTexCoord * params.FrameCount); + + //Just do pixel_inner_frame() and exit when there is no need to paint border. + if (!border_needed()) return pixel_inner_frame(coords, false); + + //From now on, we need a border. + bool bIs_outer_frame = ((vTexCoord.x < 0.0) || (vTexCoord.x > 1.0)); + + //Handle outer frame cases + //if we want ambilights in the outer frame, draw it and return + if (bIs_outer_frame) + return vec4(pixel_border(BG_IMAGE_OVER == 1.0),1.0); + + //But if it is just outer frame, just make it black. + if (bIs_outer_frame) return vec4(0.0); + + + //Handle inner frame cases + vec4 vPixel_inner_frame = pixel_inner_frame(coords, true); + //mix ambilight in the inner frame too, as curvature could shrink into the inner frame. + bool draw_border = true; + //Not painting ambilights here is the best way to cheaply draw a border around the frame + if (DO_BEZEL == 1.0) { + vec2 vTexCoord_zoomout = zoomout_coords(vTexCoord, -BEZEL_INNER_ZOOM , 1.0); + float border_start = 1-BEZEL_IMAGE_BORDER; + //Not using curved coords here because crazy things would happen with vertical games + draw_border = vTexCoord_zoomout.x < border_start || vTexCoord_zoomout.x > BEZEL_IMAGE_BORDER || + vTexCoord_zoomout.y < border_start || vTexCoord_zoomout.y > BEZEL_IMAGE_BORDER ; + } + if (draw_border) + return vec4(mix(pixel_border(BG_IMAGE_OVER == 1.0).rgb,vPixel_inner_frame.rgb,min(vPixel_inner_frame.a*1.5,1.0)),vPixel_inner_frame.a); + //return vec4(1.0,0.0,0.0,1.0); + + //Last case, inner border without ambilight: + return vPixel_inner_frame; +} + + +void main() { + + vec2 coords = vTexCoord; + //Luminosity dependant zoom + if (DO_DYNZOOM == 1.0) { + float zoomin = 1.0 + (texture(avglum_passFeedback, vec2(0.25,0.25) ).a/ DYNZOOM_FACTOR); + coords = zoom(coords, zoomin); + } + + //Curvature + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) + coords = Warp(coords,GEOM_WARP_X,GEOM_WARP_Y); + } + + //Scale coords according to bezel settings? + if (DO_BEZEL == 1.0) { + coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0); + } + + //"Just" handle inner and outer frame here: + vec4 pixel_out = main_wrap(coords); + + //Draw bezel + if (DO_BEZEL == 1.0) { + pixel_out = vec4(compose_bezel_over(pixel_out.rgb),1.0); + } + + //Draw an image "Over" the bezel with an hole inside by the alpha channel + if (DO_BG_IMAGE == 1.0 && BG_IMAGE_OVER==1.0) { + vec4 bg_image = pixel_background_image(true); + pixel_out = mix(pixel_out,bg_image,bg_image.a); + } + + //For debug purposes: + //quad split screen + //if ( (vOutputCoord.x < 0.5 && vOutputCoord.y > 0.5) || (vOutputCoord.x > 0.5 && vOutputCoord.y < 0.5) ) pixel_out = texture(first_pass,vOutputCoord); + //split screen + //if (vTexCoord.y < 0.5) pixel_out = texture(first_pass,vTexCoord); + //pixel_out = texture(avglum_pass,vTexCoord); + + FragColor = pixel_out; +} diff --git a/bezel/koko-aio/shaders/first_pass.slang b/bezel/koko-aio/shaders/first_pass.slang new file mode 100644 index 0000000..d78a754 --- /dev/null +++ b/bezel/koko-aio/shaders/first_pass.slang @@ -0,0 +1,177 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 4) out vec3 temperature_rgb; + +#include "includes/functions.include.slang" + + +vec3 kelvin2rgb(float k) { + //Convert kelvin temperature to rgb factors + k = clamp(k,1000,40000); + k=k/100.0; + float tmpCalc; + vec3 pixel_out; + if (k<=66) { + pixel_out.r = 255; + pixel_out.g = 99.47080258612 * log(k) - 161.11956816610; + } else { + pixel_out.r = 329.6987274461 * pow(k - 60 ,-0.13320475922); + pixel_out.g = 288.12216952833 * pow(k-60, -0.07551484921); + } + + if (k >= 66) + pixel_out.b = 255; + else if (k<=19) + pixel_out.b = 0; + else + pixel_out.b = 138.51773122311 * log(k - 10) - 305.04479273072; + + return pixel_out/255.0; +} + + +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + if (TEMPERATURE != 6500) + temperature_rgb = kelvin2rgb(TEMPERATURE); +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 4) in vec3 temperature_rgb; +layout(location = 0) out vec4 FragColor; + +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "includes/functions.include.slang" + +vec3 color_tools(vec3 pixel_out) { +//Apply color corrections to input signal. + + //Push luminance without clipping + pixel_out = pixel_push_luminance(pixel_out,LUMINANCE); + + //Modify saturation + if (!(SATURATION == 1.0)) { + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(pixel_out.rgb, W)); + pixel_out.rgb = mix(intensity, pixel_out.rgb, SATURATION); + } + + //Modify contrast and brightness + if (CONTRAST != 0.0 || BRIGHTNESS != 0.0) + pixel_out.rgb = scale_to_range_vec3(pixel_out.rgb, -CONTRAST, 1+CONTRAST) + BRIGHTNESS; + + //Modify color temperature + if (TEMPERATURE != 6500.0) pixel_out.rgb = pixel_out.rgb * temperature_rgb; + return pixel_out; +} + + +vec3 pixel_no_flicker(vec2 coord){ + vec3 pixel_out = texture(Source,coord).rgb; + if (DO_CCORRECTION == 1.0) + pixel_out = color_tools(pixel_out); + return pixel_out.rgb; +} + +vec3 pixel_flickering() { +/* Simulates the flickering effect of the interlaced screens. + * As I remember, it was visible when a line and the next had high + * luminosity differences. + * So we need sample the current line and the previous one + * (eventually applying color corrections to both). + * + * Repeating the following: + * On frame 0, return the "clean" pixel + * On frame 1, mix the upper pixel with the current one + * On frame 2, mix the lower pixel with the current one + * + * The effect of the mix is the flickering itself, and we modulate + * the mix according to the luminance difference between the current + * pixel and the mixed one. + * + * We choose to alternate on a period of 3, + * (thus considering the upper pixel and the lower one) + * or else the high pixel persistance of lcd displays wont allow + * to see the effect (the lcd panel would just mix the pixels by itself (meh). + */ + + vec3 pixel_cur = pixel_no_flicker(vTexCoord); + float mymod = params.FrameCount % 3; + + if (mymod == 0.0) return pixel_cur; + float line_tick = (params.OriginalSize.y > MIN_LINES_INTERLACED ) ? 1 : 2 ; + + vec3 flickline; + if (mymod == 1.0 ) + flickline = pixel_no_flicker(vTexCoord + vec2(0.0,params.OriginalSize.w/line_tick)); + else if (mymod == 2.0) + flickline = pixel_no_flicker(vTexCoord - vec2(0.0,params.OriginalSize.w/line_tick)); + + float lumdiff = (flickline.r+flickline.g+flickline.b)/3.0 - + (pixel_cur.r+pixel_cur.g+pixel_cur.b)/3.0; + + if (lumdiff > 0.0) { + lumdiff = scale_to_range(lumdiff,0.0,SCANLINE_FLICKERING_POWER); + return mix(pixel_cur,flickline,lumdiff); + } else { + return pixel_cur; + } +} + + +void debug() { +//Just test patterns here + vec3 pixel_debug; + //Use one of the following to debug: + //pixel_debug=vec3(abs(sin(params.FrameCount/3.14/8.0))); //white fade + //pixel_debug=vec3(abs(sin(params.FrameCount/3.14/20)),0.0,0.0); //red fade + //pixel_debug=vec3(1.0); + //pixel_debug=vec3(0.0,1.0,0.0); + //pixel_debug=vec3(0.38,0.0,1.0)*vTexCoord.x; + pixel_debug=vec3(vTexCoord.x); //H bw gradient + //pixel_debug=vec3(floor(vTexCoord.x*16)/16); //H bw gradient 16gray + //pixel_debug=vec3(floor(vTexCoord.x*64)/64); //H bw gradient 64gray + //pixel_debug=vec3(floor(vTexCoord.x*128)/128); //H bw gradient 128gray + //pixel_debug=vec3(1,0,0,0)*floor(vTexCoord.x*64)/64; //H red gradient 64 + //if (mod(params.FrameCount,100) < 50) pixel_debug=vec3(0.0) ; else pixel_debug=vec3(1.0); + //FragColor = vec4(color_tools(pixel_debug).rgb,1.0); + FragColor = vec4(pixel_debug,1.0); +} + + +void main() { + + //debug(); return; + + /* since flickering code needs + luminosity difference between 2 vertical lines + both have to be processed through color corrections and rgb pixel offsets. + before flickering code can operate. (pixel_no_flicker) + Therefore we call pixel_no_flicker inside it when we want flickering scanlines + and outside id when we dont. + */ + + if (DO_SCANLINES == 0.0) { + FragColor= vec4(pixel_no_flicker(vTexCoord),1.0); + return; + } + + //Implicit else: DO_SCANLINES == 1.0 + if (scanline_have_to_flicker(is_interlaced())) { + FragColor = vec4(pixel_flickering(),1.0); + return; + } + + //Implicit else: DO_SCANLINES == 1.0 but no flickering needed. + FragColor = vec4(pixel_no_flicker(vTexCoord),1.0); +} + + diff --git a/bezel/koko-aio/shaders/fxaa.slang b/bezel/koko-aio/shaders/fxaa.slang new file mode 100644 index 0000000..e6cdf3d --- /dev/null +++ b/bezel/koko-aio/shaders/fxaa.slang @@ -0,0 +1,271 @@ +#version 450 +#include "config.inc" + +/** + * @license + * Copyright (c) 2011 NVIDIA Corporation. All rights reserved. + * + * TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED + * *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS + * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA + * OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT, OR + * CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS + * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY + * OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, + * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + +/* +FXAA_PRESET - Choose compile-in knob preset 0-5. +------------------------------------------------------------------------------ +FXAA_EDGE_THRESHOLD - The minimum amount of local contrast required + to apply algorithm. + 1.0/3.0 - too little + 1.0/4.0 - good start + 1.0/8.0 - applies to more edges + 1.0/16.0 - overkill +------------------------------------------------------------------------------ +FXAA_EDGE_THRESHOLD_MIN - Trims the algorithm from processing darks. + Perf optimization. + 1.0/32.0 - visible limit (smaller isn't visible) + 1.0/16.0 - good compromise + 1.0/12.0 - upper limit (seeing artifacts) +------------------------------------------------------------------------------ +FXAA_SEARCH_STEPS - Maximum number of search steps for end of span. +------------------------------------------------------------------------------ +FXAA_SEARCH_THRESHOLD - Controls when to stop searching. + 1.0/4.0 - seems to be the best quality wise +------------------------------------------------------------------------------ +FXAA_SUBPIX_TRIM - Controls sub-pixel aliasing removal. + 1.0/2.0 - low removal + 1.0/3.0 - medium removal + 1.0/4.0 - default removal + 1.0/8.0 - high removal + 0.0 - complete removal +------------------------------------------------------------------------------ +FXAA_SUBPIX_CAP - Insures fine detail is not completely removed. + This is important for the transition of sub-pixel detail, + like fences and wires. + 3.0/4.0 - default (medium amount of filtering) + 7.0/8.0 - high amount of filtering + 1.0 - no capping of sub-pixel aliasing removal +*/ + +#ifndef FXAA_PRESET + #define FXAA_PRESET 4 +#endif + +#if (FXAA_PRESET == 6) + #define FXAA_EDGE_THRESHOLD (1.0/16.0) + #define FXAA_EDGE_THRESHOLD_MIN (1.0/12.0) + #define FXAA_SEARCH_STEPS 128 + #define FXAA_SEARCH_THRESHOLD (1.0/16.0) + #define FXAA_SUBPIX_CAP (1.0) + #define FXAA_SUBPIX_TRIM (0.0) +#endif + +#if (FXAA_PRESET == 3) + #define FXAA_EDGE_THRESHOLD (1.0/16.0) + #define FXAA_EDGE_THRESHOLD_MIN (1.0/16.0) + #define FXAA_SEARCH_STEPS 16 + #define FXAA_SEARCH_THRESHOLD (1.0/4.0) + #define FXAA_SUBPIX_CAP (3.0/4.0) + #define FXAA_SUBPIX_TRIM (1.0/4.0) +#endif +#if (FXAA_PRESET == 4) + #define FXAA_EDGE_THRESHOLD (1.0/8.0) + #define FXAA_EDGE_THRESHOLD_MIN (1.0/24.0) + #define FXAA_SEARCH_STEPS 8 + #define FXAA_SEARCH_THRESHOLD (1.0/4.0) + #define FXAA_SUBPIX_CAP (3.0/4.0) + #define FXAA_SUBPIX_TRIM (1.0/8.0) +#endif +#if (FXAA_PRESET == 5) + #define FXAA_EDGE_THRESHOLD (1.0/16.0) + #define FXAA_EDGE_THRESHOLD_MIN (1.0/12.0) + #define FXAA_SEARCH_STEPS 32 + #define FXAA_SEARCH_THRESHOLD (1.0/4.0) + #define FXAA_SUBPIX_CAP (7.0/8.0) + #define FXAA_SUBPIX_TRIM (1.0/8.0) +#endif + +#define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM)) + +// Return the luma, the estimation of luminance from rgb inputs. +// This approximates luma using one FMA instruction, +// skipping normalization and tossing out blue. +// FxaaLuma() will range 0.0 to 2.963210702. +float FxaaLuma(vec3 rgb) { + return rgb.y * (0.587/0.299) + rgb.x; +} + +vec3 FxaaLerp3(vec3 a, vec3 b, float amountOfA) { + return (vec3(-amountOfA) * b) + ((a * vec3(amountOfA)) + b); +} + +vec4 FxaaTexOff(sampler2D tex, vec2 pos, ivec2 off, vec2 rcpFrame) { + float x = pos.x + float(off.x) * rcpFrame.x; + float y = pos.y + float(off.y) * rcpFrame.y; + return textureLod(tex, vec2(x, y),0); +} + +// pos is the output of FxaaVertexShader interpolated across screen. +// xy -> actual texture position {0.0 to 1.0} +// rcpFrame should be a uniform equal to {1.0/frameWidth, 1.0/frameHeight} +vec3 FxaaPixelShader(vec2 pos, sampler2D tex, vec2 rcpFrame) +{ + vec3 rgbN = FxaaTexOff(tex, pos.xy, ivec2( 0,-1), rcpFrame).xyz; + vec3 rgbW = FxaaTexOff(tex, pos.xy, ivec2(-1, 0), rcpFrame).xyz; + vec3 rgbM = FxaaTexOff(tex, pos.xy, ivec2( 0, 0), rcpFrame).xyz; + vec3 rgbE = FxaaTexOff(tex, pos.xy, ivec2( 1, 0), rcpFrame).xyz; + vec3 rgbS = FxaaTexOff(tex, pos.xy, ivec2( 0, 1), rcpFrame).xyz; + + float lumaN = FxaaLuma(rgbN); + float lumaW = FxaaLuma(rgbW); + float lumaM = FxaaLuma(rgbM); + float lumaE = FxaaLuma(rgbE); + float lumaS = FxaaLuma(rgbS); + float rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE))); + float rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE))); + + float range = rangeMax - rangeMin; + if(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD)) + { + return rgbM; + } + + vec3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS; + + float lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25; + float rangeL = abs(lumaL - lumaM); + float blendL = max(0.0, (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE; + blendL = min(FXAA_SUBPIX_CAP, blendL); + + vec3 rgbNW = FxaaTexOff(tex, pos.xy, ivec2(-1,-1), rcpFrame).xyz; + vec3 rgbNE = FxaaTexOff(tex, pos.xy, ivec2( 1,-1), rcpFrame).xyz; + vec3 rgbSW = FxaaTexOff(tex, pos.xy, ivec2(-1, 1), rcpFrame).xyz; + vec3 rgbSE = FxaaTexOff(tex, pos.xy, ivec2( 1, 1), rcpFrame).xyz; + rgbL += (rgbNW + rgbNE + rgbSW + rgbSE); + rgbL *= vec3(1.0/9.0); + + float lumaNW = FxaaLuma(rgbNW); + float lumaNE = FxaaLuma(rgbNE); + float lumaSW = FxaaLuma(rgbSW); + float lumaSE = FxaaLuma(rgbSE); + + float edgeVert = + abs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) + + abs((0.50 * lumaW ) + (-1.0 * lumaM) + (0.50 * lumaE )) + + abs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE)); + float edgeHorz = + abs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) + + abs((0.50 * lumaN ) + (-1.0 * lumaM) + (0.50 * lumaS )) + + abs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE)); + + bool horzSpan = edgeHorz >= edgeVert; + float lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x; + + if(!horzSpan) + { + lumaN = lumaW; + lumaS = lumaE; + } + + float gradientN = abs(lumaN - lumaM); + float gradientS = abs(lumaS - lumaM); + lumaN = (lumaN + lumaM) * 0.5; + lumaS = (lumaS + lumaM) * 0.5; + + if (gradientN < gradientS) + { + lumaN = lumaS; + lumaN = lumaS; + gradientN = gradientS; + lengthSign *= -1.0; + } + + vec2 posN; + posN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5); + posN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0); + + gradientN *= FXAA_SEARCH_THRESHOLD; + + vec2 posP = posN; + vec2 offNP = horzSpan ? vec2(rcpFrame.x, 0.0) : vec2(0.0, rcpFrame.y); + float lumaEndN = lumaN; + float lumaEndP = lumaN; + bool doneN = false; + bool doneP = false; + posN += offNP * vec2(-1.0, -1.0); + posP += offNP * vec2( 1.0, 1.0); + + for(int i = 0; i < FXAA_SEARCH_STEPS; i++) { + if(!doneN) + { + lumaEndN = FxaaLuma(textureLod(tex, posN.xy,0.0).xyz); + } + if(!doneP) + { + lumaEndP = FxaaLuma(textureLod(tex, posP.xy,0.0).xyz); + } + + doneN = doneN || (abs(lumaEndN - lumaN) >= gradientN); + doneP = doneP || (abs(lumaEndP - lumaN) >= gradientN); + + if(doneN && doneP) + { + break; + } + if(!doneN) + { + posN -= offNP; + } + if(!doneP) + { + posP += offNP; + } + } + + float dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y; + float dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y; + bool directionN = dstN < dstP; + lumaEndN = directionN ? lumaEndN : lumaEndP; + + if(((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0)) + { + lengthSign = 0.0; + } + + + float spanLength = (dstP + dstN); + dstN = directionN ? dstN : dstP; + float subPixelOffset = (0.5 + (dstN * (-1.0/spanLength))) * lengthSign; + vec3 rgbF = textureLod(tex, vec2( + pos.x + (horzSpan ? 0.0 : subPixelOffset), + pos.y + (horzSpan ? subPixelOffset : 0.0)),0.0).xyz; + return FxaaLerp3(rgbL, rgbF, blendL); +} + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D first_pass; + + + +void main() { + if ( DO_FXAA == 0.0 ) return; + FragColor = vec4(FxaaPixelShader(vTexCoord, first_pass, vec2(global.first_passSize.z, global.first_passSize.w)),0.0); +} diff --git a/bezel/koko-aio/shaders/halo.slang b/bezel/koko-aio/shaders/halo.slang new file mode 100644 index 0000000..3be713f --- /dev/null +++ b/bezel/koko-aio/shaders/halo.slang @@ -0,0 +1,60 @@ +#version 450 +#include "config.inc" +#define pi 3.141592654 + +// Blur sizes must not depend on input resolution +#define scalemod_x (global.in_glow_passSize.x/360.0) +#define scalemod_y (global.in_glow_passSize.y/270.0) + + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; + + +void main() { + gl_Position = global.MVP * Position; + //vTexCoord = get_scaled_coords(TexCoord); + vTexCoord = TexCoord; + vOutputCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D FXAA_pass; +layout(set = 0, binding = 3) uniform sampler2D first_pass; +layout(set = 0, binding = 4) uniform sampler2D in_glow_pass; +layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass; +// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times, +// shamlessly hidden into an include: +#include "includes/pixel_glows.include.slang" + + +vec4 main_wrap(void) { + //Halo + vec3 pixel_haloed; + vec2 halo_coords = vTexCoord; + + if (DO_IN_GLOW == 1.0) + pixel_haloed = pixel_glow(in_glow_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb; + else if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0) + pixel_haloed = pixel_glow(shift_and_bleed_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, params.OutputSize, params.OutputSize).rgb; + else if (DO_FXAA > 0.0) + pixel_haloed = pixel_glow(FXAA_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb; + else + pixel_haloed = pixel_glow(first_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb; + + return vec4(pixel_haloed.rgb,1.0); +} + + + +void main() { + if (DO_HALO == 0.0 ) return; + + FragColor = main_wrap(); +} diff --git a/bezel/koko-aio/shaders/in_glow.slang b/bezel/koko-aio/shaders/in_glow.slang new file mode 100644 index 0000000..f81a683 --- /dev/null +++ b/bezel/koko-aio/shaders/in_glow.slang @@ -0,0 +1,46 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord ; +} + + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 3) uniform sampler2D FXAA_pass; +layout(set = 0, binding = 4) uniform sampler2D first_pass; +layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass; + +// Blur sizes must not depend on input resolution +#define scalemod_x (params.OutputSize.x/360.0) +#define scalemod_y (params.OutputSize.y/270.0) + +// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times, +// shamlessly hidden into an include: +#include "includes/pixel_glows.include.slang" + +void main() { + if (DO_IN_GLOW == 0.0) return; + + vec3 pixel_glowed; + if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0) + pixel_glowed = pixel_glow(shift_and_bleed_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb; + else if (DO_FXAA > 0.0) + pixel_glowed = pixel_glow(FXAA_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb; + else + pixel_glowed = pixel_glow(first_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb; + + FragColor = vec4((pixel_glowed),1.0); +} + diff --git a/bezel/koko-aio/shaders/includes/blooms.include.slang b/bezel/koko-aio/shaders/includes/blooms.include.slang new file mode 100644 index 0000000..3e6000c --- /dev/null +++ b/bezel/koko-aio/shaders/includes/blooms.include.slang @@ -0,0 +1,23 @@ +#include "pows.include.slang" +#define Pi2 6.283 +#define bloom_directions 8 + +#define b_offset_x -0.05 //Why is this needed by bloom? + +#define bdirections 8 + +vec3 bloom(sampler2D smp, vec2 uv, vec4 smpsize, vec2 dest_size, float quality, float gamma, float start_offset, float lod) { + vec2 r = dest_size/smpsize.xy ; + vec3 lookup; + vec3 color = vec3(0.0,0.0,0.0); + float steps=0.0; + + for( float d=start_offset; d MIN_LINES_INTERLACED); +} + +float scale_to_range(float x, float dmin, float dmax) { + //Scales 0..1 range to a..b range + return ( (dmax-dmin) * x ) + dmin; +} + +vec3 scale_to_range_vec3(vec3 x, float dmin, float dmax) { + //Scales 0..1 range to a..b range + return ( (dmax-dmin) * x ) + dmin; +} + +vec2 scale_to_range_vec2(vec2 x, float dmin, float dmax) { + //Scales 0..1 range to a..b range + return ( (dmax-dmin) * x ) + dmin; +} + +#define RND_A 12.9898 +#define RND_B 78.233 +#define RND_C 43758.5453 + +float random(float power, vec2 seed) { + //From pal-singlepass.slang + //https://github.com/svofski/CRT + //Copyright (c) 2016, Viacheslav Slavinsky + //All rights reserved. + float dt = dot(seed.xy, vec2(RND_A, RND_B)); + float sn = mod(dt,3.14); + + float noise_out = fract(sin(sn) * RND_C) - 0.5; + noise_out = clamp(noise_out, -power, power); + return noise_out ; +} + + +//CURVATURE + #define corner_aspect vec2(1.0, 0.75) + float border(vec2 coord) + { + coord = (coord - vec2(0.5)) + vec2(0.5, 0.5); + coord = min(coord, vec2(1.0) - coord) * corner_aspect; + vec2 cdist = vec2(GEOM_CORNER_SIZE); + coord = (cdist - min(coord, cdist)); + float dist = sqrt(dot(coord, coord)); + return clamp((cdist.x - dist)*GEOM_CORNER_SMOOTH, 0.0, 1.0); + } + + + vec2 Warp(vec2 uv,float wx, float wy){ + uv = uv * 2.0 - 1.0; + vec2 CRT_Distortion = vec2(wx, wy); + float curvedCoordsDistance = length(uv); + uv /= curvedCoordsDistance; + uv *= (1.0-pow(vec2(1.0-(curvedCoordsDistance/1.4142135623730950488016887242097)),(1.0/(1.0+CRT_Distortion*0.2)))); + uv /= (1.0-pow(vec2(0.29289321881345247559915563789515),(1.0/(vec2(1.0)+CRT_Distortion*0.2)))); + uv = uv* 0.5 + 0.5; + return uv; + } + + +//VIGNETTE - SPOT +/* float gauss(float x, float x0, float sx, float size, float power){ + float arg = x-x0; + arg = -(1/size)/2.*arg*arg/sx; + float a = 1./(pow(2.*3.1415*sx, 0.5)); + return a*exp(arg) * power; + } + + float gauss_xy(float pos_x, float pos_y, float size, float power, float gmin, float gmax) { + vec2 uv = vTexCoord.xy + vec2(pos_x,pos_y); + float scale_uv = params.SourceSize.x / params.SourceSize.y; + float gx = gauss(uv.x* scale_uv, 0.5*scale_uv, 0.1, size, power); + float gy = gauss(uv.y, 0.5, 0.1, size, power); + float light = gx*gy; + return clamp(light,gmin,gmax); + } +*/ + +//AMBILIGHT RELATED + bool border_needed() { + //returns if we need to draw on the border + return (DO_AMBILIGHT + DO_BG_IMAGE > 0.0); + } + + + #define mark_useless(x) mark_outer_frame(x) + vec4 mark_outer_frame(vec3 pixel) { + return vec4(pixel.rgb,0.0) ; + //For my mental sanity, I use a specific alpha channel value to mark a frame as a border + return vec4(pixel.r,pixel.g,pixel.b,alpha_mark) ; + } + #define is_useless(x) is_outer_frame(x) + bool is_outer_frame(vec4 pixel) { + return pixel.a == 0.0; + /*Check if a pixel is marked as border by comparing the value of its alpha channel + Tolerance is needed, because precision can be as low as 1/256; since I don't need + alpha channel, use an even large tolerance. + */ + return abs(pixel.a - alpha_mark) < 0.05; //<-- 0.05 allow about 20 alpha levels (1*0.05) + } + + #define ar_tolerance 0.1 //To compensate when comparing different A/R + bool is_rotated() { + /* + For some reason, probably retroarch rotates the view only on final viewport stage, transparent to the shader passes, + The OutputSize of a pass that scales to viewport will have different aspect from the real final viewport. + We exploit this to understand when a game is rotated. + -->> This function only works if the calling pass scales to viewport. + This will fail for very particular cases, eg: when output window is extremely tall + */ + return (abs((params.OutputSize.x/params.OutputSize.y) - (global.FinalViewportSize.x/global.FinalViewportSize.y)) > ar_tolerance); + } + + float get_in_aspect() { + if (ASPECT_X == -1) return 1.5; // ntsc + if (ASPECT_X == -2) return 1.25; // pal + if (ASPECT_X == -3) return 1.143; // 8/7 snes + if (ASPECT_X == -4) return 1.428; // 10/7 megadrive + if (ASPECT_X == -5) return params.OriginalSize.x/params.OriginalSize.y; //uncorrected + + if (ASPECT_X == 0) { + return 1.3333333333333; //all mame games, not rotated + } + + return ASPECT_X / ASPECT_Y ; + } + + vec2 get_scaled_coords_aspect(vec2 pTexCoord, vec4 destsize, float in_aspect , bool is_rotated){ + if (!border_needed()) return pTexCoord; + //else + float scale_x = 1.0; + float scale_y = 1.0; + float offset_x = 0.0 ; + float offset_y = 0.0 ; + if (is_rotated) { + scale_y = destsize.x/(destsize.y / in_aspect ); + offset_y = (0.5 * scale_y ) - 0.5 ; + } else { + scale_x = destsize.x/(destsize.y * in_aspect); + offset_x = (0.5 * scale_x ) - 0.5 ; + } + + vec2 scale_coord=vec2(pTexCoord.x*scale_x - offset_x , pTexCoord.y*scale_y - offset_y); + return scale_coord; + } + + vec2 get_scaled_coords(vec2 pTexCoord, vec4 destsize, bool is_rotated){ + if (!border_needed()) return pTexCoord; + //else + float scale_x = 1.0; + float scale_y = 1.0; + float offset_x = 0.0 ; + float offset_y = 0.0 ; + float in_aspect = get_in_aspect(); + if (is_rotated) { + //I'm doing ping pong between th the following 2: + //FIXME: verify if it depends on destsize being outputsize or finalviewportsize!! + //scale_y = destsize.y/(destsize.x / in_aspect ); + scale_y = destsize.x/(destsize.y / in_aspect ); + + offset_y = (0.5 * scale_y ) - 0.5 ; + + + } else { + //scale_x = params.OutputSize.x/(params.OutputSize.y * in_aspect); + //scale_x = global.FinalViewportSize.x/(global.FinalViewportSize.y * in_aspect); + scale_x = destsize.x/(destsize.y * in_aspect); + offset_x = (0.5 * scale_x ) - 0.5 ; + } + + vec2 scale_coord=vec2(pTexCoord.x*scale_x - offset_x , pTexCoord.y*scale_y - offset_y); + return scale_coord; + } + + + diff --git a/bezel/koko-aio/shaders/includes/pack_unpack.include.slang b/bezel/koko-aio/shaders/includes/pack_unpack.include.slang new file mode 100644 index 0000000..e9bb40b --- /dev/null +++ b/bezel/koko-aio/shaders/includes/pack_unpack.include.slang @@ -0,0 +1,64 @@ +/* pack_2to1_f and unpack_1to2_float + * Take 2 floats and pack them into one + * #pragma format R32G32B32A32_SFLOAT needed + * The brighter color is lost. +*/ + #define pack_floats_clamp 0.996078431372549 //1-(1/255) + #define pack_floats_precision 255.0 + float pack_2to1_f(vec2 in_float){ + //Clamp and round to 1/255 needed: + in_float = min(in_float,pack_floats_clamp); + in_float = floor(in_float*255.0)/255.0; + return in_float.x*pack_floats_precision + in_float.y; + } + + vec2 unpack_1to2_float(float f){ + float fr = fract(f); + float fg = floor(f)/pack_floats_precision; + return vec2(fr,fg); + } + + //pack 2 vec3 into one + vec3 pack_2to1_vec3(vec3 v1, vec3 v2) { + return vec3( + pack_2to1_f(vec2(v1.r,v2.r)), + pack_2to1_f(vec2(v1.g,v2.g)), + pack_2to1_f(vec2(v1.b,v2.b)) + ); + } + void unpack_1to2_vec3(in vec3 v, out vec3 v1, out vec3 v2) { + vec2 t; + t.xy = unpack_1to2_float(v.r); + v1.r = t.x; + v2.r = t.y; + t.xy = unpack_1to2_float(v.g); + v1.g = t.x; + v2.g = t.y; + t.xy = unpack_1to2_float(v.b); + v1.b = t.x; + v2.b= t.y; + } + +/* packColor and unpackColor + * Take a vec3 and pack them into one float + * #pragma format R32G32B32A32_SFLOAT needed + * The brighter colors (2) are lost. +*/ + #define mul_low 65025.0 //(pow(255.0,2.0)) + #define mul_mid 16581375.0 //(pow(255.0,3.0)) + #define mul_hi 4228250625.0 //(pow(255.0,4.0)) + + #define pack_color_clamp 0.992156862745098 // 1.0-(2.0/255) + + float packColor(vec3 color) { + color = clamp(color,0.0, pack_color_clamp); + color = floor(color*255.0)/255.0; + return (color.b * mul_low) + (color.g * mul_mid) + (color.r * mul_hi) ; + } + + vec3 unpackColor(float result) { + float hi = floor(result/mul_mid)*mul_mid; + float mid = floor((result - hi)/mul_low)*mul_low; + float low = result - hi - mid; + return vec3(hi/mul_hi, mid/mul_mid, low/mul_low); + } diff --git a/bezel/koko-aio/shaders/includes/pixel_glows.include.slang b/bezel/koko-aio/shaders/includes/pixel_glows.include.slang new file mode 100644 index 0000000..e332947 --- /dev/null +++ b/bezel/koko-aio/shaders/includes/pixel_glows.include.slang @@ -0,0 +1,988 @@ + +//Those functions will sample from source texture (the previous), but with a precision taken from passthrough_passSize. +//This is needed because the source texture has been scaled up to the dimension of the viewport to allow +//the scanlines to be linear filtered. + + +/* +#include "pows.include.slang" + + + + + +vec4 pixel_glow_gamma_1(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} + + +vec4 pixel_glow_gamma_2(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3*=l3; l2*=l2; l1*=l1; + r1*=r1; r2*=r2; r3*=r3; + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3*=l3; l2*=l2; l1*=l1; + r1*=r1; r2*=r2; r3*=r3; + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3*=l3; l2*=l2; l1*=l1; + r1*=r1; r2*=r2; r3*=r3; + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3*=l3; l2*=l2; l1*=l1; + r1*=r1; r2*=r2; r3*=r3; + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_3(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1); + r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1); + r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1); + r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1); + r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_4(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1); + r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1); + r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1); + r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1); + r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_5(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1); + r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1); + r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1); + r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1); + r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_6(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1); + r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1); + r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1); + r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1); + r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_7(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1); + r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1); + r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1); + r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1); + r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_8(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1); + r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1); + r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1); + r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1); + r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_9(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1); + r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1); + r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1); + r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1); + r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} +vec4 pixel_glow_gamma_10(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + // vec4 SourceSize1 = params.SourceSize; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1); + r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1); + r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1); + r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1); + r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} + +vec3 blur_v(sampler2D in_texture, float my_glowpixy, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + + vec2 dy = vec2(0.0,SourceSize1.w) ; + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 y2 = 2.0*dy; + + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + vec3 t1 = texture(in_texture, pC4 ).rgb; + vec3 t2 = texture(in_texture, pC4 -dy).rgb; + vec3 b1 = texture(in_texture, pC4 +dy).rgb; + vec3 b2 = texture(in_texture, pC4 +y2).rgb; + + float wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + float wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + float wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + float wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + float wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 smoothed = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return smoothed; + +return vec3(1.0); + +} + +*/ + +vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, float glow_gamma, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + // Calculating texel coordinates + vec2 tex = coords.xy * 1.00001; + + vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5); + vec2 fp = fract(OGL2Pos); + vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; // + vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); // + vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw; + + vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx; + vec2 y2 = 2.0*dy; + + vec3 glow_gamma_vec3 = vec3(glow_gamma); + + my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution. + my_glowpixy = my_glowpixy / scalemod_y *2 ; + + float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3); + float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2); + float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1); + float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1); + float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2); + float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3); + + float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3); + + vec3 l3 = texture(in_texture, pC4 -x2 ).rgb; + vec3 l2 = texture(in_texture, pC4 -dx ).rgb; + vec3 l1 = texture(in_texture, pC4 ).rgb; + vec3 r1 = texture(in_texture, pC4 +dx ).rgb; + vec3 r2 = texture(in_texture, pC4 +x2 ).rgb; + vec3 r3 = texture(in_texture, pC4 +x3 ).rgb; + l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3); + r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3); + + vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 -dy).rgb; + l2 = texture(in_texture, pC4 -dx -dy).rgb; + l1 = texture(in_texture, pC4 -dy).rgb; + r1 = texture(in_texture, pC4 +dx -dy).rgb; + r2 = texture(in_texture, pC4 +x2 -dy).rgb; + r3 = texture(in_texture, pC4 +x3 -dy).rgb; + l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3); + r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3); + + vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +dy).rgb; + l2 = texture(in_texture, pC4 -dx +dy).rgb; + l1 = texture(in_texture, pC4 +dy).rgb; + r1 = texture(in_texture, pC4 +dx +dy).rgb; + r2 = texture(in_texture, pC4 +x2 +dy).rgb; + r3 = texture(in_texture, pC4 +x3 +dy).rgb; + l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3); + r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3); + + vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + l3 = texture(in_texture, pC4 -x2 +y2).rgb; + l2 = texture(in_texture, pC4 -dx +y2).rgb; + l1 = texture(in_texture, pC4 +y2).rgb; + r1 = texture(in_texture, pC4 +dx +y2).rgb; + r2 = texture(in_texture, pC4 +x2 +y2).rgb; + r3 = texture(in_texture, pC4 +x3 +y2).rgb; + l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3); + r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3); + + vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt; + + wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2); + wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1); + wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1); + wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2); + + wt = 1.0/(wl2+wl1+wr1+wr2); + + vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt; + + return vec4(Bloom*my_glow,1.0); +} + + + +vec4 dumb_glow(sampler2D in_texture, float my_glow, float glow_gamma, vec2 coords) { + vec3 pixel_in = texture(in_texture, coords ).rgb; + pixel_in = pow(pixel_in,vec3(glow_gamma))*my_glow; + return vec4(pixel_in,0.0); +} + +vec4 pixel_glow(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, float glow_gamma, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) { + + if ( (my_glowpix >= GLOW_SHARP_MAX) && (my_glowpixy >= GLOW_SHARP_MAX) ) { + return dumb_glow(in_texture, my_glow,glow_gamma,coords); + } + + return pixel_glow_std_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2); + + //return pixel_glow_my_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2); + + +/* if (glow_gamma == 1) { return pixel_glow_gamma_1(in_texture, my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 2) { return pixel_glow_gamma_2(in_texture, my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 3) { return pixel_glow_gamma_3(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 4) { return pixel_glow_gamma_4(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 5) { return pixel_glow_gamma_5(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 6) { return pixel_glow_gamma_6(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 7) { return pixel_glow_gamma_7(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 8) { return pixel_glow_gamma_8(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 9) { return pixel_glow_gamma_9(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + if (glow_gamma == 10) { return pixel_glow_gamma_10(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); } + return pixel_glow_std_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2); +*/ + + +} + diff --git a/bezel/koko-aio/shaders/includes/pows.include.slang b/bezel/koko-aio/shaders/includes/pows.include.slang new file mode 100644 index 0000000..acedf00 --- /dev/null +++ b/bezel/koko-aio/shaders/includes/pows.include.slang @@ -0,0 +1,59 @@ +vec3 pow_2(vec3 v) { + return v*v*v; +} + +vec3 pow_3(vec3 v) { + return v*v*v; +} + +vec3 pow_4(vec3 v) { + vec3 v2 = v*v; + return v2*v2; +} + +vec3 pow_5(vec3 v) { + vec3 v2 = v*v; + return v2*v2*v; +} + +vec3 pow_6(vec3 v) { + vec3 v2 = v*v; + return v2*v2*v2; +} + +vec3 pow_7(vec3 v) { + vec3 v2 = v*v; + return v2*v2*v2*v; +} + +vec3 pow_8(vec3 v) { + vec3 v2 = v*v; + vec3 v4 = v2*v2; + return v4*v4; +} + +vec3 pow_9(vec3 v) { + vec3 v2 = v*v; + vec3 v4 = v2*v2; + return v4*v4*v; +} + +vec3 pow_10(vec3 v) { + vec3 v2 = v*v; + vec3 v4 = v2*v2; + return v4*v4*v2; +} + +vec3 my_pow(vec3 c,float p) { + if (p == 1) return c; + else if (p == 2) return c * c ; + else if (p == 3) return pow_3(c); + else if (p == 4) return pow_4(c); + else if (p == 5) return pow_5(c); + else if (p == 6) return pow_6(c); + else if (p == 7) return pow_7(c); + else if (p == 8) return pow_8(c); + else if (p == 9) return pow_9(c); + else if (p == 10) return pow_10(c); + return pow(c,vec3(p)); +} diff --git a/bezel/koko-aio/shaders/isrotated.slang b/bezel/koko-aio/shaders/isrotated.slang new file mode 100644 index 0000000..a1f0515 --- /dev/null +++ b/bezel/koko-aio/shaders/isrotated.slang @@ -0,0 +1,33 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out float mark_color_rotated; + +#include "includes/functions.include.slang" +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + if (is_rotated()) + mark_color_rotated = 1.0; + else + mark_color_rotated = 0.0; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in float mark_color_rotated; +layout(location = 0) out vec4 FragColor; + +layout(set = 0, binding = 2) uniform sampler2D Source; + + +void main() { + FragColor.r = mark_color_rotated; +} + + diff --git a/bezel/koko-aio/shaders/old_unused/ambi_displace.slang b/bezel/koko-aio/shaders/old_unused/ambi_displace.slang new file mode 100644 index 0000000..77fc7d5 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/ambi_displace.slang @@ -0,0 +1,138 @@ +#version 450 +#include "config.inc" +#define eps 1e-8 + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vTexCoord_zoom; + +#include "functions.include.slang" +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + vTexCoord_zoom = TexCoord; + if (DO_BEZEL==1.0 && BEZEL_INNER_ZOOM !=0.0) vTexCoord_zoom = zoomout_coords(TexCoord, -BEZEL_INNER_ZOOM , 1.0); +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vTexCoord_zoom; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Original; +layout(set = 0, binding = 3) uniform sampler2D main_pass; +layout(set = 0, binding = 4) uniform sampler2D isrotated_pass; + + + +bool border_updown(){ + //Return if black bars are up and down or left and right. + //Why this one work? + return ((params.OriginalSize.x > params.OriginalSize.y) && (global.main_passSize.x < global.main_passSize.y )) || + (params.OriginalSize.x < params.OriginalSize.y) && (global.main_passSize.x > global.main_passSize.y ) ; +} + +vec3 main_wrap(){ + + float myborder = 0.025; //20% border to be displaced + vec2 newcoords = vTexCoord_zoom; + vec3 pixel_out; + float mydiv; + float myoffset; + + if (!border_updown()) { + mydiv = vTexCoord.x / myborder; + myoffset = (1.0-myborder) * floor(mydiv); + + if (vTexCoord.x < 0.5) + newcoords.x = newcoords.x - ( myborder * floor(mydiv) ) ; + else + newcoords.x = (1 - myborder) + ( newcoords.x - (myborder*floor(mydiv)) ) ; + + return texture(Original, newcoords).rgb; + } + + //Is rotated + mydiv = vTexCoord.y / myborder; + myoffset = (1.0-myborder) * floor(mydiv); + + if (vTexCoord.y < 0.5) + newcoords.y = newcoords.y - ( myborder * floor(mydiv) ) ; + else + newcoords.y = (1 - myborder) + ( newcoords.y - (myborder*floor(mydiv)) ) ; + return texture(Original, newcoords).rgb; + + +} +#include "functions.include.slang" + float mborder(vec2 coord,float aspect,float corner_size, float corner_smooth) { + coord = (coord - vec2(0.5)) + vec2(0.5, 0.5); + coord = min(coord, vec2(1.0) - coord) * aspect; + vec2 cdist = vec2(corner_size); + coord = (cdist - min(coord, cdist)); + float dist = sqrt(dot(coord, coord)); + return clamp((cdist.x - dist)*corner_smooth, 0.0, 1.0); + } + + + vec2 bget_scaled_coords(vec2 pTexCoord, vec4 destsize){ + if (!border_needed()) return pTexCoord; + //else + float scale_x = 1.0; + float scale_y = 1.0; + float offset_x = 0.0 ; + float offset_y = 0.0 ; + float in_aspect = get_in_aspect(); + if (is_rotated()) { + //scale_y = params.OutputSize.y/(params.OutputSize.x / in_aspect ); + //scale_y = global.FinalViewportSize.y/(global.FinalViewportSize.x / in_aspect ); + scale_y = destsize.y/(destsize.x / in_aspect ); + offset_y = (0.5 * scale_y ) - 0.5 ; + } else { + //scale_x = params.OutputSize.x/(params.OutputSize.y * in_aspect); + //scale_x = global.FinalViewportSize.x/(global.FinalViewportSize.y * in_aspect); + scale_x = destsize.x/(destsize.y * in_aspect); + offset_x = (0.5 * scale_x ) - 0.5 ; + } + + vec2 scale_coord=vec2(pTexCoord.x*scale_x - offset_x , pTexCoord.y*scale_y - offset_y); + return scale_coord; + } + + +void main() { + if (DO_AMBILIGHT != 1.0) return; + //bool is_rotated = texture(isrotated_pass,vec2(0.5,0.5)).r > 0.5; + + + //Disegna un rettangolo sul gioco. + //samplo main_pass per riferimento. + vec4 pixel_Original = texture(Original,vTexCoord); + + FragColor = pixel_Original; + +/* + float dist = 1-length(vTexCoord-0.5); + + FragColor = vec4(main_wrap(),1.0); + + float corner_size = 0.25; + float corner_smooth = 4.0; + float zoom = 0.4; + vec2 co = get_scaled_coords(zoomout_coords(vTexCoord, -zoom , 1.0),global.FinalViewportSize); + float ss=pow(mborder(co,1.0,corner_size, corner_smooth),2.0); + + //ss = ss * smoothstep(shade_end,shade_start, vTexCoord.x); + + FragColor = vec4(ss); + + + vec2 ccords = get_scaled_coords(vTexCoord,global.FinalViewportSize); + ccords = zoomout_coords(ccords,-BEZEL_INNER_ZOOM,1.0); + //FragColor = texture(Original,ccords)*ss; +*/ +} + + diff --git a/bezel/koko-aio/shaders/old_unused/ambi_mix_pass.slang b/bezel/koko-aio/shaders/old_unused/ambi_mix_pass.slang new file mode 100644 index 0000000..cded680 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/ambi_mix_pass.slang @@ -0,0 +1,61 @@ +#version 450 +#include "config.inc" + +#define eps 1e-8 + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; + +#include "functions.include" +void main() { + gl_Position = global.MVP * Position; + vTexCoord = get_scaled_coords(TexCoord); + vOutputCoord = TexCoord; +} + + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D final_pass; +layout(set = 0, binding = 4) uniform sampler2D ambi_temporal_pass; + +#include "functions.include" + +vec4 pixel_border() { + vec3 ambi = texture(ambi_temporal_pass, vOutputCoord).rgb; + float l = length(ambi); + float sat = 1.25; + float bright = 1.25; + ambi = normalize( pow(ambi.rgb + vec3(eps), vec3(sat)))*l * bright ; + ambi*=bright; + return vec4(ambi,0.0); +} + +vec3 ambi_noised() { + return pixel_border().rgb + random(); +} + + +void main() { + vec4 psample = texture(final_pass, vOutputCoord); + if (DO_AMBILIGHT == 1) { + vec3 ambinoised = ambi_noised(); + if (is_outer_frame(psample)) { + FragColor = mark_outer_frame(ambi_noised()); + } else { + FragColor = vec4(mix(ambinoised.rgb,psample.rgb,min(psample.a*1.5,1.0)),psample.a); + } + } else { + FragColor = psample ; + } + + + //FragColor = vec4(ambi_noised(), 1.0); + +} + diff --git a/bezel/koko-aio/shaders/old_unused/ambi_passthrough_conditional.slang b/bezel/koko-aio/shaders/old_unused/ambi_passthrough_conditional.slang new file mode 100644 index 0000000..e821877 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/ambi_passthrough_conditional.slang @@ -0,0 +1,28 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + + +void main() { + if (DO_AMBILIGHT == 1.0) + FragColor = texture(Source, vTexCoord); + else + return; +} + + diff --git a/bezel/koko-aio/shaders/old_unused/bloom_passthrough_conditional.slang b/bezel/koko-aio/shaders/old_unused/bloom_passthrough_conditional.slang new file mode 100644 index 0000000..1f1be2a --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/bloom_passthrough_conditional.slang @@ -0,0 +1,36 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D main_pass; + + +void main() { + vec2 coords = vTexCoord; + if (DO_BLOOM == 1) { + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) + coords = Warp(vTexCoord,GEOM_WARP_X,GEOM_WARP_Y); + } + FragColor = texture(main_pass,coords); + return; + } else { + //No bloom requested + return; + } +} + + diff --git a/bezel/koko-aio/shaders/old_unused/blurs.include.slang b/bezel/koko-aio/shaders/old_unused/blurs.include.slang new file mode 100644 index 0000000..ce5bd4a --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/blurs.include.slang @@ -0,0 +1,12 @@ +vec4 blur9(sampler2D image, vec2 uv, vec2 resolution, vec2 direction, float lod) { + vec4 color = vec4(0.0); + vec2 off1 = vec2(1.3846153846) * direction; + vec2 off2 = vec2(3.2307692308) * direction; + color += textureLod(image, uv, lod) * 0.2270270270; + color += textureLod(image, uv + (off1 / resolution), lod) * 0.3162162162; + color += textureLod(image, uv - (off1 / resolution), lod) * 0.3162162162; + color += textureLod(image, uv + (off2 / resolution), lod) * 0.0702702703; + color += textureLod(image, uv - (off2 / resolution), lod) * 0.0702702703; + return color; +} + diff --git a/bezel/koko-aio/shaders/old_unused/curvature.slang b/bezel/koko-aio/shaders/old_unused/curvature.slang new file mode 100644 index 0000000..5745c36 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/curvature.slang @@ -0,0 +1,226 @@ +#version 450 +#include "config.inc" + + +/* + CRT Shader by EasyMode + License: GPL + + Modified by kokoko3k, stripped to keep just curvature related code. +*/ + +#define FIX(c) max(abs(c), 1e-5) +#define PI 3.141592653589 +#define TEX2D(c) texture(tex, c) +#define in_texture final_pass +#define in_textureSize final_passSize +//#define in_textureSize SourceSize + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; + +#include "functions.include" +void main() { + gl_Position = global.MVP * Position; + vTexCoord = get_scaled_coords(TexCoord); + vOutputCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D in_texture; + +float curve_distance(float x, float sharp) +{ + float x_step = step(0.5, x); + float curve = 0.5 - sqrt(0.25 - (x - x_step) * (x - x_step)) * sign(0.5 - x); + + return mix(x, curve, sharp); +} + +mat4x4 get_color_matrix(sampler2D tex, vec2 co, vec2 dx) +{ + return mat4x4(TEX2D(co - dx), TEX2D(co), TEX2D(co + dx), TEX2D(co + 2.0 * dx)); +} + +vec4 filter_lanczos(vec4 coeffs, mat4x4 color_matrix) +{ + vec4 col = color_matrix * coeffs; + vec4 sample_min = min(color_matrix[1], color_matrix[2]); + vec4 sample_max = max(color_matrix[1], color_matrix[2]); + + col = clamp(col, sample_min, sample_max); + + return col; +} + +vec2 curve_coordinate(vec2 co, float curvature_x, float curvature_y) +{ + vec2 curve = vec2(curvature_x, curvature_y); + vec2 co2 = co + co * curve - curve / 2.0; + vec2 co_weight = vec2(co.y, co.x) * 2.0 - 1.0; + + co = mix(co, co2, co_weight * co_weight); + + return co; +} + +float get_corner_weight(vec2 co, vec2 corner, float smoothfunc) +{ + float corner_weight; + + co = min(co, vec2(1.0) - co) * vec2(1.0, 0.75); + co = (corner - min(co, corner)); + corner_weight = clamp((corner.x - sqrt(dot(co, co))) * smoothfunc, 0.0, 1.0); + corner_weight = mix(1.0, corner_weight, ceil(corner.x)); + + return corner_weight; +} + +#define GEOM_ANTIALIAS 1.0 + +vec3 curve_antialias(vec2 xy,vec2 tex_size){ + vec2 midpoint = vec2(0.5, 0.5); + + vec2 co = vOutputCoord * tex_size * params.in_textureSize.zw; + vec2 co2 = vTexCoord * tex_size * params.in_textureSize.zw; + + vec3 col; + float corner_weight = get_corner_weight(curve_coordinate(co2, GEOM_BORDER_WX, GEOM_BORDER_WY ), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH); + + if ( (GEOM_WARP_X > 0) || (GEOM_WARP_Y > 0) ) { + xy *= params.in_textureSize.xy / tex_size; + + vec2 dx = vec2(1.0 / tex_size.x, 0.0); + vec2 dy = vec2(0.0, 1.0 / tex_size.y); + vec2 pix_co = xy * tex_size - midpoint; + vec2 tex_co = (floor(pix_co) + midpoint) / tex_size; + vec2 dist = fract(pix_co); + float curve_x, curve_y; + vec3 col2, diff; + + curve_x = curve_distance(dist.x, SHARPNESS_H * SHARPNESS_H); + curve_y = curve_distance(dist.y, SHARPNESS_V * SHARPNESS_V); + + vec4 coeffs_x = PI * vec4(1.0 + curve_x, curve_x, 1.0 - curve_x, 2.0 - curve_x); + vec4 coeffs_y = PI * vec4(1.0 + curve_y, curve_y, 1.0 - curve_y, 2.0 - curve_y); + + coeffs_x = FIX(coeffs_x); + coeffs_x = 2.0 * sin(coeffs_x) * sin(coeffs_x / 2.0) / (coeffs_x * coeffs_x); + coeffs_x /= dot(coeffs_x, vec4(1.0)); + + coeffs_y = FIX(coeffs_y); + coeffs_y = 2.0 * sin(coeffs_y) * sin(coeffs_y / 2.0) / (coeffs_y * coeffs_y); + coeffs_y /= dot(coeffs_y, vec4(1.0)); + + mat4x4 color_matrix; + + + color_matrix[0] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co - dy, dx)); + color_matrix[1] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co, dx)); + color_matrix[2] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co + dy, dx)); + color_matrix[3] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co + 2.0 * dy, dx)); + + col = filter_lanczos(coeffs_y, color_matrix).rgb; + } else { + col = texture(in_texture, vOutputCoord).rgb; + } + + col *= vec3(corner_weight); + return col; +} + +vec2 Warp2(vec2 texCoord){ + + vec2 curvedCoords = texCoord * 2.0 - 1.0; + vec2 CRT_Distortion = vec2(GEOM_WARP_X, GEOM_WARP_Y) * 15.; + float curvedCoordsDistance = sqrt(curvedCoords.x*curvedCoords.x+curvedCoords.y*curvedCoords.y); + + curvedCoords = curvedCoords / curvedCoordsDistance; + + curvedCoords = curvedCoords * (1.0-pow(vec2(1.0-(curvedCoordsDistance/1.4142135623730950488016887242097)),(1.0/(1.0+CRT_Distortion*0.2)))); + + curvedCoords = curvedCoords / (1.0-pow(vec2(0.29289321881345247559915563789515),(1.0/(vec2(1.0)+CRT_Distortion*0.2)))); + + curvedCoords = curvedCoords * 0.5 + 0.5; + return curvedCoords; +} + +vec3 do_curvature_antialias(){ + vec2 tex_size = params.in_textureSize.xy ; + + vec2 co = vOutputCoord * tex_size * params.in_textureSize.zw; + vec2 co2 = vTexCoord * tex_size * params.in_textureSize.zw; + vec2 curved_xy = curve_coordinate(co, GEOM_WARP_X,GEOM_WARP_Y ); + + vec3 col; + //float corner_weight = get_corner_weight(curve_coordinate(co2, GEOM_BORDER_WX, GEOM_BORDER_WY ), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH); + float corner_weight = get_corner_weight(Warp2(co), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH); + + + if ( (GEOM_WARP_X > 0) || (GEOM_WARP_Y > 0) ) { + if (GEOM_ANTIALIAS == 1.0) + col = curve_antialias(curved_xy,tex_size); + else + col = texture(in_texture,curved_xy).rgb; + } else { + col = texture(in_texture, vOutputCoord).rgb; + } + + col *= vec3(corner_weight) ; + + + + return col; +} + +const vec2 corner_aspect = vec2(1.0, 0.75); + +float corner2(vec2 coord) +{ + coord = (coord - vec2(0.5)) + vec2(0.5, 0.5); + coord = min(coord, vec2(1.0) - coord) * corner_aspect; + vec2 cdist = vec2(GEOM_CORNER_SIZE); + coord = (cdist - min(coord, cdist)); + float dist = sqrt(dot(coord, coord)); + + return clamp((cdist.x - dist)*GEOM_CORNER_SMOOTH, 0.0, 1.0); +} + + + + + +vec3 do_curvature_alias(){ + vec2 curved_xy = Warp2(vOutputCoord); + return texture(in_texture,curved_xy ).rgb * corner2(curved_xy); +} + +vec4 main_wrap() +{ + if (DO_CURVATURE == 1.0) { + return vec4(do_curvature_antialias(), 1.0); + } else { + return texture(in_texture, vOutputCoord); + } +} + +#include "functions.include" +void main() { + vec4 psample = texture(in_texture, vOutputCoord); + if ( border_needed() ) { + if (is_outer_frame(psample)) + FragColor = mark_outer_frame(vec3(0.0)); + else + FragColor = main_wrap(); + } else { + FragColor = main_wrap(); + } +} + + diff --git a/bezel/koko-aio/shaders/old_unused/in_glow.slang b/bezel/koko-aio/shaders/old_unused/in_glow.slang new file mode 100644 index 0000000..492b99f --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/in_glow.slang @@ -0,0 +1,68 @@ +#version 450 +#include "config.inc" + + +#define eps 1e-8 +#define pi 3.141592654 + + +// Blur sizes must not depend on input resolution +#define scalemod_x (params.SourceSize.x/360.0) +#define scalemod_y (params.SourceSize.y/270.0) + + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; + + +#include "functions.include" +void main() { + gl_Position = global.MVP * Position; + vTexCoord = TexCoord ; //get_scaled_coords(TexCoord); + vOutputCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D FXAA_pass; +layout(set = 0, binding = 3) uniform sampler2D doublesize_pass; + +// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times, +// shamlessly hidden into an include: +#include "pixel_glows.slang" + + +#include "functions.include" + +vec4 main_wrap(void) { + //Halo + vec2 in_glow_coords = vTexCoord; + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) + in_glow_coords = Warp(vTexCoord,GEOM_WARP_X,GEOM_WARP_Y); + } + vec3 pixel_glowed; + if (DO_FXAA == 1.0) + pixel_glowed = pixel_glow(FXAA_pass, in_glow_wh,in_glow_wh,in_glow_power,in_glow_gamma,in_glow_coords, global.FXAA_passSize, global.FXAA_passSize).rgb; + else + pixel_glowed = pixel_glow(doublesize_pass, in_glow_wh,in_glow_wh,in_glow_power,in_glow_gamma,in_glow_coords, global.FXAA_passSize, global.FXAA_passSize).rgb; + + return vec4(pixel_glowed.rgb,1.0); + //Out + return vec4(vec3(0.0),1.0); +} + + + +void main() { + if (DO_IN_GLOW == 1.0 ) { + FragColor = main_wrap(); + } else { + return; + } +} diff --git a/bezel/koko-aio/shaders/old_unused/main_pass.slang b/bezel/koko-aio/shaders/old_unused/main_pass.slang new file mode 100644 index 0000000..f166fb8 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/main_pass.slang @@ -0,0 +1,323 @@ +#version 450 +#include "config.inc" +#define half_pi 1.5707963267949 + +// RGB mask: R G B + #define m1 vec3 ( 1.0 , 0.0 , 0.0 ) //col 1 + #define m2 vec3 ( 0.0 , 1.0 , 0.0 ) //col 2 + #define m3 vec3 ( 0.0 , 0.0 , 1.0 ) //col 3 + +// RGB mask low dpi (green-magenta, exploiting native rgb subpixels) + #define m1gm vec3 ( 0.0 , 1.0 , 0.0 ) //col 1 + #define m2gm vec3 ( 1.0 , 0.0 , 1.0 ) //col 2 + +// Blur sizes must not depend on input resolution +#define scalemod_x (global.in_glow_passSize.x/360.0) +#define scalemod_y (global.in_glow_passSize.y/270.0) + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; +layout(location = 1) out vec2 vOutputCoord; + +#include "includes/functions.include.slang" +void main() { + gl_Position = global.MVP * Position; + vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, is_rotated()); + vOutputCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 1) in vec2 vOutputCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 3) uniform sampler2D FXAA_pass; +layout(set = 0, binding = 4) uniform sampler2D in_glow_pass; +layout(set = 0, binding = 5) uniform sampler2D halo_pass; +layout(set = 0, binding = 6) uniform sampler2D first_pass; +layout(set = 0, binding = 7) uniform sampler2D avglum_passFeedback; + + +#include "includes/functions.include.slang" +vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) { + int col = int( vOutputCoord.x * params.OutputSize.x ); + vec3 pixel_out; + vec3 vmasked; + vec4 vec_mod=(vec4(3,1,2,3) + vec4(VMASK_GAP,0.0,0.0,0.0))* VMASK_DARKLINE_SCALE ; + float mask_lightness = 1.0 - RGB_MASK_STRENGTH; + if ( mod(col, vec_mod.x) < vec_mod.y) vmasked = min(m1 + mask_lightness,vec3(1.0)) * source; + else if (mod(col, vec_mod.x) < vec_mod.z) vmasked = min(m2 + mask_lightness,vec3(1.0)) * source; + else if (mod(col, vec_mod.x) < vec_mod.w) vmasked = min(m3 + mask_lightness,vec3(1.0)) * source; + else vmasked = min(vec3(0.0) + mask_lightness,vec3(1.0)) * source; + + if (over_white == 1.0) pixel_out = vmasked; + else { + float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0; + whiteness-= over_white; + whiteness= clamp(whiteness,0.0,1.0); + pixel_out= mix(vmasked,source,whiteness); + } + return pixel_out; +} + +vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) { + int col = int( vOutputCoord.x * params.OutputSize.x ); + vec3 pixel_out; + vec3 vmasked; + vec3 vec_mod=(vec3(2,1,2) + vec3(VMASK_GAP,0.0,0.0))* VMASK_DARKLINE_SCALE ; + + float mask_lightness = 1.0 - RGB_MASK_STRENGTH; + if (mod(col, vec_mod.x) < vec_mod.y) vmasked = min(m1gm + mask_lightness,vec3(1.0)) * source; + else if (mod(col, vec_mod.x) < vec_mod.z) vmasked = min(m2gm + mask_lightness,vec3(1.0)) * source; + else vmasked = min(vec3(0.0) + mask_lightness,vec3(1.0)) * source; + + if (over_white == 1.0) pixel_out = vmasked; + else { + float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0; + whiteness-= over_white; + whiteness= clamp(whiteness,0.0,1.0); + pixel_out= mix(vmasked,source,whiteness); + } + + return pixel_out; +} + +vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans, + float do_offset, vec3 white_reference,float over_white) { + + float Darkline_part_w = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE; + float Darkline_part_w_x2 = Darkline_part_w*2; + //vec3 pixel_out=source; + float col_2 = vOutputCoord.x * params.OutputSize.x; + float line_2 = vOutputCoord.y * params.OutputSize.y; + + darkline_every *= VMASK_DARKLINE_SCALE; + + if (over_white != 1.0) { + //less effect on bright colors. + float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0; + darkline_trans+=(whiteness-over_white); + darkline_trans=clamp(darkline_trans,0.0,1.0); + } + + if (do_offset == 1.0) { + if (int(mod(line_2, darkline_every)) < VMASK_DARKLINE_SCALE) { + if (int(mod(col_2, Darkline_part_w_x2)) < Darkline_part_w) return source * darkline_trans; + } else if (int(mod(line_2+(darkline_every/2), darkline_every)) < VMASK_DARKLINE_SCALE ) { + // DRAW WITH OFFSET: + col_2+=Darkline_part_w; + if ((int(mod(col_2, Darkline_part_w_x2))) < Darkline_part_w) + return source * darkline_trans; + } + } else { + + if ( darkline_every >= 0.0) + if (int(mod(line_2, darkline_every)) < VMASK_DARKLINE_SCALE) return source * darkline_trans; + } + return source; +} + +/* +float scanline_shape_static_in_lum(vec2 coords, float in_luminance) { + // Modulate scanline weight via in_luminance + float period = (params.OriginalSize.y > MIN_LINES_INTERLACED ) ? 2 : 1 ; + float angle = coords.y * pi * period * params.OriginalSize.y ; + float lines = abs(sin(angle)); + lines=clamp(lines, SCANLINE_DARK,1.0); + lines = (lines*lines); + float w = (SCANLINES_BLEEDING * 9.0 * in_luminance +1 ); // + SCANLINES_BLEEDING; + lines = pow(lines,1.0/ w ); + return lines; +} +*/ + +/* + float scanline_shape_dumb(vec2 coords, bool do_flicker) { + float source_dy = global.first_passSize.w ; + if ( mod(coords.y, source_dy*2) < source_dy ) { + return 1.0; + } + return 0.0; +} +*/ + +float scanline_shape(vec2 coords, bool do_flicker) { + bool alternate = false; + float period = 1.0; + + int slow = 1; + + if (do_flicker) { + if (params.FrameCount/slow % 2 == 0.0) alternate = true; + if (params.OriginalSize.y > MIN_LINES_INTERLACED ) period = 0.5; + } + + float angle = coords.y * pi * params.OriginalSize.y * period; + + float lines; + if (alternate) + lines = -sin(angle+half_pi); //lines = abs(cos(angle)); + else + lines = sin(angle); + lines = (lines*lines); + + if (SCANLINE_DARK >= 0.0) { + lines = lines * (1.0 - SCANLINE_DARK) + SCANLINE_DARK; + } else { + float deepness = -SCANLINE_DARK; + lines = lines * ((1-SCANLINE_DARK) ) + SCANLINE_DARK ; + } + + return lines; +} + +vec4 main_wrap(vec2 co) { + bool isinterlaced = is_interlaced(); + bool flickering_scanlines = (DO_SCANLINES == 1.0) && scanline_have_to_flicker(isinterlaced) ; + + + vec3 pixel_in; + vec3 pixel_glowed; + + //Get the first available pixel_in: + if (DO_IN_GLOW == 1.0) { + pixel_glowed = texture(in_glow_pass,co).rgb; + pixel_in = pixel_glowed; + } + else if (DO_FXAA == 1.0) + pixel_in = texture(FXAA_pass,co).rgb ; + else + pixel_in = texture(first_pass,co).rgb ; + + vec3 pixel_out = pixel_in; + vec3 pixel_in_clamped = min(pixel_in,vec3(1.0)); //Clamp here for moth vmask and darklines. + + //Mask and darklines: + if (DO_VMASK_AND_DARKLINES == 1.0 ) { + if (RGB_MASK_STRENGTH > 0.0) { + //Use RGB pattern or exploit RGB layout with green and magenta? + if (VMASK_USE_GM < 1.0) { + pixel_out = pixel_vmask(pixel_in, pixel_in_clamped, VMASK_OVERWHITE); + } else { + pixel_out = pixel_vmask_gm(pixel_in, pixel_in_clamped, VMASK_OVERWHITE); + } + } + //Screen lines + if (DARKLINES_STRENGTH > 0.0 ) { + float MYDARKLINES_TRANSPARENCY = 1.0 - DARKLINES_STRENGTH; + pixel_out = pixel_darklines(pixel_out,DARKLINES_PERIOD,MYDARKLINES_TRANSPARENCY,DO_DARKLINES_VOFFSET,pixel_in_clamped,DRKLN_OVERWHITE); + } + + } + + //Halo + vec3 pixel_haloed; + if (DO_HALO == 1.0 ) { + pixel_haloed = texture(halo_pass,co).rgb; + pixel_out += pixel_haloed; + pixel_out = clamp(pixel_out,0.0,HALO_CLAMP); + } + + // Non flickering scanlines + if ( DO_SCANLINES == 1.0 ) { + vec3 pixel_bleed ; + if (! ( isinterlaced && (SCANLINE_DISABLE_ON_INTERLACE == 1.0)) ) { + if (DO_IN_GLOW + DO_HALO > 0.0) { + if (DO_HALO == 1.0) pixel_bleed = pixel_haloed; + else if (DO_IN_GLOW == 1.0) pixel_bleed = pixel_glowed; + else pixel_bleed = pixel_in; + } + + float scanline_shape = scanline_shape(co, flickering_scanlines ) ; + vec3 pixel_scanlined = scanline_shape * pixel_out; + + pixel_out = pixel_scanlined + (pixel_out * pixel_bleed * SCANLINES_BLEEDING * (1-scanline_shape)); + } + } + + if (DO_CCORRECTION == 1.0) pixel_out = pow(pixel_out,vec3(GAMMA_OUT)); + + //Out + return vec4(pixel_out,1.0) ; //* border(border_coords); +} + +/* +//Test masks to be used with pixel_vmask_test() +// Actually slower than pixel_vmask(), but handy for quick test + //first element of the array is the useful size. + const vec3 oo = vec3(0); //padding + const vec3 mask_RGB[10] = vec3[]( vec3(3), vec3(1,0,0), vec3(0,1,0), vec3(0,0,1), oo, oo, oo, oo, oo, oo); + const vec3 mask_GM[10] = vec3[]( vec3(2), vec3(0,1,0), vec3(1,0,1), oo, oo, oo, oo, oo, oo, oo); + + +vec3 pixel_vmask_test(vec3 color_in, vec3[10] vmask, int multiplier, float gap, vec3 white_reference, float over_white) { + int col = int( vOutputCoord.x * params.OutputSize.x ); + vec3 vmasked; + + float size = (vmask[0].x + gap) * multiplier; + + for (int i = multiplier ; i <= size * multiplier ; i+=multiplier) { + if (mod(col, size) < i) { + vmasked = min (vmask[i/multiplier] + 1.0 - RGB_MASK_STRENGTH, vec3(1.0)) * color_in; + break; + } + } + + if (over_white == 1.0) return vmasked; + else { + float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0; + whiteness-= over_white; + whiteness= clamp(whiteness,0.0,1.0); + return mix(vmasked, color_in, whiteness); + } + +} +*/ + + +void main() { + vec2 coords = vTexCoord; + + if (DO_DYNZOOM == 1.0) { + float zoomin = 1.0 + (texture(avglum_passFeedback, vec2(0.25,0.25) ).a/ DYNZOOM_FACTOR); + coords = zoom(vTexCoord, zoomin); + } + + vec2 coords_curved = coords; + + //Curvature: set coords_curved coordinate: (global var) + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) + coords_curved = Warp(coords_curved,GEOM_WARP_X,GEOM_WARP_Y); + } + + if (DO_BEZEL == 1.0) { + coords_curved = zoomout_coords(coords_curved, -BEZEL_INNER_ZOOM , 1.0); + coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0); + } + + //FIXME: bezel may need a wider border when zoomed in. + //But for performance reasons we can wide the border in relation to the desidered reflection area. + //by now, just wide by BEZEL_REFLECTION_AREA_SIZE defined in config.inc + + bool is_border = false; + + if (border_needed()) { + + float WIDEN = DO_BEZEL * BEZEL_REFLECTION_AREA_SIZE; + bool b_is_rotated = is_rotated(); + bool is_outside_x = ((coords.x > 1.0+WIDEN ) || (coords.x < 0.0 - WIDEN) ); + bool is_outside_y = ((coords.y > 1.0+WIDEN ) || (coords.y < 0.0 - WIDEN) ); + is_border = (b_is_rotated && is_outside_y) || (!b_is_rotated && is_outside_x); + } + + if (is_border) + FragColor = mark_outer_frame(vec3(0.0)); + else + FragColor = main_wrap(coords_curved); + + +} + + diff --git a/bezel/koko-aio/shaders/old_unused/passthrough.slang b/bezel/koko-aio/shaders/old_unused/passthrough.slang new file mode 100644 index 0000000..79c8384 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/passthrough.slang @@ -0,0 +1,25 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + + +void main() { + FragColor = texture(Source, vTexCoord); +} + + diff --git a/bezel/koko-aio/shaders/old_unused/passthrough_original.slang b/bezel/koko-aio/shaders/old_unused/passthrough_original.slang new file mode 100644 index 0000000..5d5c2e5 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/passthrough_original.slang @@ -0,0 +1,36 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Original; + + +void main() { + FragColor = vec4(texture(Original, vTexCoord).xyz,1.0); + + /* //Use to debug: + vec4 pixel; + //pixel=vec4(abs(sin(params.FrameCount/3.14/20))); //white fade + //pixel=vec4(abs(sin(params.FrameCount/3.14/20)),0.0,0.0,0.0); //red fade + //pixel=vec4(0.2); + if (mod(params.FrameCount,100) == 0.0) { + pixel = vec4(0.6); + } else { + pixel = vec4(0.0); + } + FragColor = pixel; +*/ +} diff --git a/bezel/koko-aio/shaders/old_unused/scanline-flickering.slang b/bezel/koko-aio/shaders/old_unused/scanline-flickering.slang new file mode 100644 index 0000000..02f75ec --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/scanline-flickering.slang @@ -0,0 +1,103 @@ +#version 450 + +#include "config.inc" + + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + +} + + +#pragma stage fragment + +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D in_glow_pass; +layout(set = 0, binding = 3) uniform sampler2D FXAA_pass; +layout(set = 0, binding = 4) uniform sampler2D doublesize_pass; + + +bool scanline_have_to_flicker(bool is_interlaced) { + return ((scanline_flickering == 1.0) || ((scanline_flickering==2.0) && is_interlaced )); +} + +void main() +{ + + vec3 pixel_out = vec3(0.0); + + //Use to debug: + //pixel_out=vec4(abs(sin(params.FrameCount/3.14/20))); //white fade + //pixel_out=vec4(abs(sin(params.FrameCount/3.14/20)),0.0,0.0,0.0); //red fade + //pixel_out=vec4(0.2); + + if (DO_SCANLINES == 1.0) { + if (scanline_flickering != 0.0) { + + bool is_interlaced = (params.OriginalSize.y > MIN_LINES_INTERLACED) ? true : false ; + + if ( scanline_have_to_flicker(is_interlaced) ) { + + //Choose the right source + if (DO_IN_GLOW == 1.0) { + pixel_out = texture(in_glow_pass, vTexCoord).rgb; + } else if (DO_FXAA == 1.0) { + pixel_out = texture(FXAA_pass, vTexCoord).rgb; + } else { + pixel_out = texture(doublesize_pass, vTexCoord).rgb; + } + + int scanline_period; + int scanline_period_half; + + /* Puae switches from lowres to sdres on interlaced screens + since we blindly double the h-resolution, because we need + to double y resolution on low resolution to simulate scanlines + and providing sd-res to fxaa, we can check if a screen is + interlaced by testing v-resolution of source image. + which could be at least 200*2(puae)*2(ourselves)=800px. + Rest assured that everything over 576, + (maximum pal overscanned) is interlaced. + */ + if (is_interlaced) { + scanline_period=4; + scanline_period_half=2; + } else { + scanline_period=2; + scanline_period_half=1; + } + + //Skip scanlines on interlaced content? + if (! ( is_interlaced && (scanline_disable_on_interlace == 1.0)) ) { + + float mymod = mod(vTexCoord.y * params.OutputSize.y , scanline_period); + + //Do flickering based on user prefs. + //(blank odd lines on odd frames and even lines on even frames) + if ((scanline_flickering == 1.0) || + ((scanline_flickering==2.0) && is_interlaced )) { + if (int(mod(float(params.FrameCount),2 )) < 1.0 ) { + if (mymod >= scanline_period_half) { pixel_out *= SCANLINE_DARK; } + } else { + if (mymod < scanline_period_half) { pixel_out *= SCANLINE_DARK; } + } + } + + } + } + } + } + + FragColor = vec4(pixel_out,1.0); + +} + diff --git a/bezel/koko-aio/shaders/old_unused/vignette_and_spot.slang b/bezel/koko-aio/shaders/old_unused/vignette_and_spot.slang new file mode 100644 index 0000000..2431463 --- /dev/null +++ b/bezel/koko-aio/shaders/old_unused/vignette_and_spot.slang @@ -0,0 +1,49 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +#include "functions.include" +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; + float aspect_prev = (params.SourceSize.y / params.SourceSize.x); + if (border_needed() ) { + vTexCoord.x = vTexCoord.x * aspect_prev - ((0.5 * aspect_prev) - 0.5); + float in_aspect = get_in_aspect(); + vTexCoord.x = vTexCoord.x * in_aspect - ((0.5 * in_aspect) - 0.5); + } else { + vTexCoord.x = vTexCoord.x * aspect_prev - ((0.5 * aspect_prev) - 0.5); + float dasp = global.FinalViewportSize.x/global.FinalViewportSize.y; + vTexCoord.x = (vTexCoord.x* dasp - ((0.5 * dasp) - 0.5)) ; + } +} + + + + + + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "functions.include" +void main() { + if ((DO_VIGNETTE != 1.0) && (DO_SPOT != 1.0)) return; + + vec3 pixel_out; + if (DO_VIGNETTE == 1.0) + pixel_out.r = gauss_xy(0.0, 0.0, v_size, v_power, 0.0, 1.0); + if (DO_SPOT == 1.0) + pixel_out.g = gauss_xy(s_center_x, s_center_y, s_size, s_power, 0.0, 10.0); + + FragColor = vec4(pixel_out,1.0); +} + + diff --git a/bezel/koko-aio/shaders/reflection_blur_h.slang b/bezel/koko-aio/shaders/reflection_blur_h.slang new file mode 100644 index 0000000..90e354b --- /dev/null +++ b/bezel/koko-aio/shaders/reflection_blur_h.slang @@ -0,0 +1,114 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; + +layout(location = 0) out vec2 vTexCoord; + + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 1) uniform sampler2D first_pass; +layout(set = 0, binding = 2) uniform sampler2D isrotated_passFeedback; + +#define SourceTexture first_pass +#define SourceTextureSize global.first_passSize + +#include "includes/functions.include.slang" + +#define c_tolerance 0.051 + +#define b_offset_x -0.05 +#define Pi2 6.28318530717959 + +vec3 blur(float Quality, float Directions, float Size, vec2 co,float lod) { + vec4 iResolution = SourceTextureSize; + vec2 Radius = Size/iResolution.xy ; + + vec3 color = vec3(0.0,0.0,0.0); + vec3 lookup = vec3(0.0,0.0,0.0); + float steps=0.0; + for( float d=0.0; d 4.0) return vec3(1.0); + + return color; +} + +void main() { + if (DO_BEZEL == 0.0) return; + + vec2 coords_curved = vTexCoord; + if (DO_CURVATURE == 1.0) { + if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) + coords_curved = Warp(coords_curved,GEOM_WARP_X,GEOM_WARP_Y); + } + //coords_curved = zoomout_coords(coords_curved, -BEZEL_INNER_ZOOM , 1.0); + coords_curved = zoomout_coords(coords_curved, BEZEL_REFLECTION_AREA_SIZE , 1.0); + + bool is_rotated = texture(isrotated_passFeedback,vec2(0.5,0.5)).r > 0.5; + + + /* Calculate the internal area (the one which is not mirrored) + so that we can skip blurring it: + */ + /* vec2 ar_box; + if (!is_rotated) { + //Width of the aspect corrected box zoomed as requested by the bezel settings: + ar_box.x = global.FinalViewportSize.z*global.FinalViewportSize.y*get_in_aspect() * (1+BEZEL_INNER_ZOOM-c_tolerance) ; + //Height zoomed as requested by bezel settings: + ar_box.y = 1+BEZEL_INNER_ZOOM-c_tolerance; + } else { + ar_box.y = global.FinalViewportSize.z*global.FinalViewportSize.y/get_in_aspect() * (1+BEZEL_INNER_ZOOM-c_tolerance) ; + ar_box.x= 1+BEZEL_INNER_ZOOM-c_tolerance; + } + + //start_point is the middle of the screen minut half the content width + vec2 start_point = vec2(0.5 - (ar_box.x*0.5), 0.5 - (ar_box.y*0.5)); + vec2 end_point = vec2(0.5 + (ar_box.x*0.5), 0.5 + (ar_box.y*0.5)); + + + //Now we can skip the internal area or the black one as already marked by main_pass: + //bool skip_condition =(vTexCoord.x > start_point.x && vTexCoord.x < end_point.x && + // vTexCoord.y > start_point.y && vTexCoord.y < end_point.y) || + // is_outer_frame(texture(main_pass,vTexCoord)); + + */ + + //FIXME (CHECKME) is the rotation state still important? + + bool skip_condition = (coords_curved.x < 1.0 - c_tolerance && coords_curved.x > c_tolerance && + coords_curved.y < 1.0 - c_tolerance && coords_curved.y > c_tolerance ) ; + + if (skip_condition) { + FragColor = mark_useless(vec3(0.0)); + return; + } + + vec2 res = vec2(global.first_passSize.x, global.first_passSize.y); + vec2 dir = vec2(1.0,0.0); + ///Quality, Directions, Size, coords, lod + vec3 pixel_blur = blur(1,4,2,coords_curved, 2.0); + + FragColor = vec4(apply_fuzzy_main_pass(pixel_blur),1.0); + +} + + + diff --git a/bezel/koko-aio/shaders/reflection_blur_v.slang b/bezel/koko-aio/shaders/reflection_blur_v.slang new file mode 100644 index 0000000..325e460 --- /dev/null +++ b/bezel/koko-aio/shaders/reflection_blur_v.slang @@ -0,0 +1,56 @@ +#version 450 +#include "config.inc" + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +#include "includes/functions.include.slang" + +#define SourceTexture Source +#define SourceTextureSize params.SourceSize + +#define b_offset_x -0.05 +#define Pi2 6.28318530717959 +vec3 blur(float Quality, float Directions, float Size, vec2 co) { + vec4 iResolution = SourceTextureSize; + vec2 Radius = Size/iResolution.xy ; + vec3 color = vec3(0.0,0.0,0.0); + vec3 lookup = vec3(0.0,0.0,0.0); + float steps=0.0; + for( float d=0.0; d 1.0) { + vec3 pixel_out = pixel_offset_wrap(vTexCoord); + if (DO_SAT_BLEED > 0.0) { + if ( DO_FXAA == 1.0) { + pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize); + } else { + pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize); + } + } + FragColor = vec4(pixel_out,0.0); + return; + } + + //Handle case where only color shifting is requested + if (DO_SHIFT_RGB > 0.0) { + vec3 pixel_out = pixel_offset_wrap(vTexCoord); + FragColor = vec4(pixel_out,0.0); + return; + } + + //Handle case where only chroma bleed is requested + if (DO_SAT_BLEED > 0.0) { + vec3 pixel_out; + if ( DO_FXAA == 1.0) { + pixel_out = texture(FXAA_pass, vTexCoord).rgb; + pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize); + } else { + pixel_out = texture(first_pass, vTexCoord).rgb; + pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize); + } + FragColor = vec4(pixel_out,0.0); + return; + } + + +} diff --git a/bezel/koko-aio/textures/background_over.png b/bezel/koko-aio/textures/background_over.png new file mode 100644 index 0000000..40f9263 Binary files /dev/null and b/bezel/koko-aio/textures/background_over.png differ diff --git a/bezel/koko-aio/textures/background_under.png b/bezel/koko-aio/textures/background_under.png new file mode 100644 index 0000000..fd5f218 Binary files /dev/null and b/bezel/koko-aio/textures/background_under.png differ diff --git a/bezel/koko-aio/textures/monitor_body.png b/bezel/koko-aio/textures/monitor_body.png new file mode 100644 index 0000000..2af0c79 Binary files /dev/null and b/bezel/koko-aio/textures/monitor_body.png differ diff --git a/bezel/koko-aio/textures/monitor_body_source/monitor_body.7z b/bezel/koko-aio/textures/monitor_body_source/monitor_body.7z new file mode 100644 index 0000000..9985996 Binary files /dev/null and b/bezel/koko-aio/textures/monitor_body_source/monitor_body.7z differ diff --git a/bezel/koko-aio/textures/other_backgrounds_under/background1.png b/bezel/koko-aio/textures/other_backgrounds_under/background1.png new file mode 100644 index 0000000..fd5f218 Binary files /dev/null and b/bezel/koko-aio/textures/other_backgrounds_under/background1.png differ diff --git a/bezel/koko-aio/textures/other_backgrounds_under/background2.png b/bezel/koko-aio/textures/other_backgrounds_under/background2.png new file mode 100644 index 0000000..39d0ddc Binary files /dev/null and b/bezel/koko-aio/textures/other_backgrounds_under/background2.png differ diff --git a/bezel/koko-aio/textures/other_backgrounds_under/background3.png b/bezel/koko-aio/textures/other_backgrounds_under/background3.png new file mode 100644 index 0000000..1742746 Binary files /dev/null and b/bezel/koko-aio/textures/other_backgrounds_under/background3.png differ diff --git a/bezel/koko-aio/tv-BASE.slangp b/bezel/koko-aio/tv-BASE.slangp new file mode 100644 index 0000000..ec49aa1 --- /dev/null +++ b/bezel/koko-aio/tv-BASE.slangp @@ -0,0 +1,245 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.550000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.600000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DO_HALO = "1.000000" +HALO_POWER = "0.520000" +HALO_W = "3.000000" +HALO_H = "3.000000" +HALO_GAMMA = "1.100000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.000000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-NTSC.slangp b/bezel/koko-aio/tv-NTSC.slangp new file mode 100644 index 0000000..68851ed --- /dev/null +++ b/bezel/koko-aio/tv-NTSC.slangp @@ -0,0 +1,251 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.200000" +CONTRAST = "0.050000" +BRIGHTNESS = "0.050000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.560000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "2.000000" +SHIFT_G = "20.000000" +SHIFT_B = "-2.000000" +DO_SAT_BLEED = "1.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.750000" +IN_GLOW_WH = "1.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +DARKLINES_STRENGTH = "0.700000" +DO_HALO = "1.000000" +HALO_POWER = "0.500000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.150000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.300000" +SCANLINES_BLEEDING = "0.825000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp b/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp new file mode 100644 index 0000000..2f92c40 --- /dev/null +++ b/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp @@ -0,0 +1,251 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.350000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.750000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "1.000000" +DO_DARKLINES_VOFFSET = "0.000000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.350000" +HALO_W = "3.000000" +HALO_H = "3.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp b/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp new file mode 100644 index 0000000..6035478 --- /dev/null +++ b/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp @@ -0,0 +1,253 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.350000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.750000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "1.000000" +DO_DARKLINES_VOFFSET = "0.000000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.350000" +HALO_W = "3.000000" +HALO_H = "3.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-aperturegrille-bloom.slangp b/bezel/koko-aio/tv-aperturegrille-bloom.slangp new file mode 100644 index 0000000..51beb2a --- /dev/null +++ b/bezel/koko-aio/tv-aperturegrille-bloom.slangp @@ -0,0 +1,246 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.350000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.750000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "1.000000" +DO_DARKLINES_VOFFSET = "0.000000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.350000" +HALO_W = "3.000000" +HALO_H = "3.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.000000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-aperturegrille.slangp b/bezel/koko-aio/tv-aperturegrille.slangp new file mode 100644 index 0000000..98c5db5 --- /dev/null +++ b/bezel/koko-aio/tv-aperturegrille.slangp @@ -0,0 +1,245 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.350000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.900000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "1.000000" +DO_DARKLINES_VOFFSET = "0.000000" +DARKLINES_PERIOD = "2.000000" +DO_HALO = "1.000000" +HALO_POWER = "0.350000" +HALO_W = "3.000000" +HALO_H = "3.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.000000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp b/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp new file mode 100644 index 0000000..f3d21b4 --- /dev/null +++ b/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp @@ -0,0 +1,251 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.550000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.600000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "0.900000" +DO_HALO = "1.000000" +HALO_POWER = "0.520000" +HALO_W = "3.000000" +HALO_H = "3.000000" +HALO_GAMMA = "1.100000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp b/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp new file mode 100644 index 0000000..368076f --- /dev/null +++ b/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp @@ -0,0 +1,253 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.550000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.600000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "0.900000" +DO_HALO = "1.000000" +HALO_POWER = "0.520000" +HALO_W = "3.000000" +HALO_H = "3.000000" +HALO_GAMMA = "1.100000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.500000" +GEOM_WARP_Y = "0.500000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_INNER_ZOOM = "-0.005000" +BEZEL_FRAME_ZOOM = "0.139000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "5.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-slotmask-bloom.slangp b/bezel/koko-aio/tv-slotmask-bloom.slangp new file mode 100644 index 0000000..15e3301 --- /dev/null +++ b/bezel/koko-aio/tv-slotmask-bloom.slangp @@ -0,0 +1,246 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.550000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.600000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "0.900000" +DO_HALO = "1.000000" +HALO_POWER = "0.520000" +HALO_W = "3.000000" +HALO_H = "3.000000" +HALO_GAMMA = "1.100000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +DO_BLOOM = "1.000000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.000000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-slotmask.slangp b/bezel/koko-aio/tv-slotmask.slangp new file mode 100644 index 0000000..b44d5d7 --- /dev/null +++ b/bezel/koko-aio/tv-slotmask.slangp @@ -0,0 +1,245 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +TEMPERATURE = "7000.000000" +GAMMA_OUT = "0.550000" +DO_FXAA = "1.000000" +DO_SHIFT_RGB = "1.000000" +OFFSET_STRENGTH = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_PAL = "1.000000" +SAT_BLEED_STRENGTH = "0.500000" +SAT_BLEED_SIZE_LEFT = "3.000000" +SAT_BLEED_SIZE_RIGHT = "3.000000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.600000" +IN_GLOW_WH = "3.500000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +DARKLINES_STRENGTH = "0.900000" +DO_HALO = "1.000000" +HALO_POWER = "0.520000" +HALO_W = "3.000000" +HALO_H = "3.000000" +HALO_GAMMA = "1.100000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.700000" +SCANLINE_COMPENSATION = "0.200000" +SCANLINES_BLEEDING = "1.000000" +SCANLINE_FLICKERING = "0.000000" +SCANLINE_FLICKERING_POWER = "0.500000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.000000" +GEOM_CORNER_SMOOTH = "200.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.400000" +AMBI_POWER = "1.000000" +V_SIZE = "2.700000" +V_POWER = "1.050000" +S_POSITION = "194.000000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true" diff --git a/bezel/koko-aio/tv-vibrant.slangp b/bezel/koko-aio/tv-vibrant.slangp new file mode 100644 index 0000000..dff1b3b --- /dev/null +++ b/bezel/koko-aio/tv-vibrant.slangp @@ -0,0 +1,253 @@ +shaders = "17" +shader0 = "shaders/first_pass.slang" +filter_linear0 = "false" +wrap_mode0 = "mirrored_repeat" +mipmap_input0 = "false" +alias0 = "first_pass" +float_framebuffer0 = "false" +srgb_framebuffer0 = "false" +scale_type_x0 = "source" +scale_x0 = "2.000000" +scale_type_y0 = "source" +scale_y0 = "2.000000" +shader1 = "shaders/fxaa.slang" +filter_linear1 = "true" +wrap_mode1 = "mirrored_repeat" +mipmap_input1 = "true" +alias1 = "FXAA_pass" +float_framebuffer1 = "false" +srgb_framebuffer1 = "false" +scale_type_x1 = "source" +scale_x1 = "1.000000" +scale_type_y1 = "source" +scale_y1 = "1.000000" +shader2 = "shaders/shift_and_bleed.slang" +filter_linear2 = "true" +wrap_mode2 = "mirrored_repeat" +mipmap_input2 = "false" +alias2 = "shift_and_bleed_pass" +float_framebuffer2 = "false" +srgb_framebuffer2 = "false" +scale_type_x2 = "source" +scale_x2 = "1.000000" +scale_type_y2 = "source" +scale_y2 = "1.000000" +shader3 = "shaders/in_glow.slang" +filter_linear3 = "true" +wrap_mode3 = "mirrored_repeat" +mipmap_input3 = "false" +alias3 = "in_glow_pass" +float_framebuffer3 = "true" +srgb_framebuffer3 = "false" +scale_type_x3 = "source" +scale_x3 = "1.000000" +scale_type_y3 = "source" +scale_y3 = "1.000000" +shader4 = "shaders/halo.slang" +filter_linear4 = "true" +wrap_mode4 = "mirrored_repeat" +mipmap_input4 = "false" +alias4 = "halo_pass" +float_framebuffer4 = "true" +srgb_framebuffer4 = "false" +scale_type_x4 = "source" +scale_x4 = "1.000000" +scale_type_y4 = "source" +scale_y4 = "1.000000" +shader5 = "shaders/avglum_pass.slang" +filter_linear5 = "true" +wrap_mode5 = "mirrored_repeat" +mipmap_input5 = "false" +alias5 = "avglum_pass" +float_framebuffer5 = "false" +srgb_framebuffer5 = "false" +scale_type_x5 = "source" +scale_x5 = "0.500000" +scale_type_y5 = "source" +scale_y5 = "0.500000" +shader6 = "shaders/reflection_blur_h.slang" +filter_linear6 = "true" +wrap_mode6 = "mirrored_repeat" +mipmap_input6 = "false" +alias6 = "reflected_blurred_pass1" +float_framebuffer6 = "false" +srgb_framebuffer6 = "false" +scale_type_x6 = "source" +scale_x6 = "1.000000" +scale_type_y6 = "source" +scale_y6 = "1.000000" +shader7 = "shaders/reflection_blur_v.slang" +filter_linear7 = "true" +wrap_mode7 = "mirrored_repeat" +mipmap_input7 = "false" +alias7 = "reflected_blurred_pass2" +float_framebuffer7 = "false" +srgb_framebuffer7 = "false" +scale_type_x7 = "source" +scale_x7 = "1.000000" +scale_type_y7 = "source" +scale_y7 = "1.000000" +shader8 = "shaders/bloom_pass_1.slang" +filter_linear8 = "true" +wrap_mode8 = "mirrored_repeat" +mipmap_input8 = "false" +alias8 = "bloom_pass_1" +float_framebuffer8 = "true" +srgb_framebuffer8 = "false" +scale_type_x8 = "source" +scale_x8 = "1.000000" +scale_type_y8 = "source" +scale_y8 = "1.000000" +shader9 = "shaders/bloom_pass_2.slang" +filter_linear9 = "true" +wrap_mode9 = "clamp_to_edge" +mipmap_input9 = "false" +alias9 = "bloom_pass_2" +float_framebuffer9 = "false" +srgb_framebuffer9 = "false" +scale_type_x9 = "source" +scale_x9 = "0.500000" +scale_type_y9 = "source" +scale_y9 = "0.500000" +shader10 = "shaders/bloom_pass_3.slang" +filter_linear10 = "true" +wrap_mode10 = "clamp_to_edge" +mipmap_input10 = "false" +alias10 = "bloom_pass_3" +float_framebuffer10 = "false" +srgb_framebuffer10 = "false" +scale_type_x10 = "source" +scale_x10 = "1.000000" +scale_type_y10 = "source" +scale_y10 = "1.000000" +shader11 = "shaders/bloom_pass_4.slang" +filter_linear11 = "true" +wrap_mode11 = "mirrored_repeat" +mipmap_input11 = "false" +alias11 = "bloom_pass_final" +float_framebuffer11 = "false" +srgb_framebuffer11 = "false" +scale_type_x11 = "source" +scale_x11 = "1.000000" +scale_type_y11 = "source" +scale_y11 = "1.000000" +shader12 = "shaders/ambi_push_pass.slang" +filter_linear12 = "true" +wrap_mode12 = "mirrored_repeat" +mipmap_input12 = "false" +alias12 = "ambi_push_pass" +float_framebuffer12 = "true" +srgb_framebuffer12 = "false" +scale_type_x12 = "source" +scale_x12 = "1.000000" +scale_type_y12 = "source" +scale_y12 = "1.000000" +shader13 = "shaders/ambi_pre_pass.slang" +filter_linear13 = "true" +wrap_mode13 = "clamp_to_border" +mipmap_input13 = "true" +alias13 = "ambi_pre_pass1" +float_framebuffer13 = "false" +srgb_framebuffer13 = "false" +scale_type_x13 = "source" +scale_x13 = "1.000000" +scale_type_y13 = "source" +scale_y13 = "1.000000" +shader14 = "shaders/ambi_temporal_pass.slang" +filter_linear14 = "true" +wrap_mode14 = "clamp_to_border" +mipmap_input14 = "false" +alias14 = "ambi_temporal_pass" +float_framebuffer14 = "true" +srgb_framebuffer14 = "false" +scale_type_x14 = "source" +scale_x14 = "1.000000" +scale_type_y14 = "source" +scale_y14 = "1.000000" +shader15 = "shaders/isrotated.slang" +filter_linear15 = "true" +wrap_mode15 = "mirrored_repeat" +mipmap_input15 = "false" +alias15 = "isrotated_pass" +float_framebuffer15 = "false" +srgb_framebuffer15 = "false" +scale_type_x15 = "viewport" +scale_x15 = "0.100000" +scale_type_y15 = "viewport" +scale_y15 = "0.100000" +shader16 = "shaders/final_pass.slang" +filter_linear16 = "true" +wrap_mode16 = "mirrored_repeat" +mipmap_input16 = "false" +alias16 = "final_pass" +float_framebuffer16 = "false" +srgb_framebuffer16 = "false" +scale_type_x16 = "viewport" +scale_x16 = "1.000000" +scale_type_y16 = "viewport" +scale_y16 = "1.000000" +DO_CCORRECTION = "1.000000" +LUMINANCE = "0.300000" +TEMPERATURE = "7200.000000" +GAMMA_OUT = "0.450000" +DO_FXAA = "1.000000" +SHIFT_R = "-20.000000" +SHIFT_G = "1.000000" +SHIFT_B = "20.000000" +DO_SAT_BLEED = "1.000000" +SAT_BLEED_FALLOFF = "1.800000" +DO_IN_GLOW = "1.000000" +IN_GLOW_POWER = "1.700000" +IN_GLOW_WH = "2.000000" +IN_GLOW_GAMMA = "2.000000" +DO_VMASK_AND_DARKLINES = "1.000000" +RGB_MASK_STRENGTH = "1.000000" +VMASK_USE_GM = "1.000000" +VMASK_GAP = "1.000000" +VMASK_OVERWHITE = "0.750000" +DARKLINES_STRENGTH = "0.400000" +DARKLINES_PERIOD = "6.000000" +DRKLN_OVERWHITE = "0.750000" +DO_HALO = "1.000000" +HALO_POWER = "0.450000" +HALO_W = "3.500000" +HALO_H = "3.500000" +HALO_GAMMA = "1.200000" +DO_SCANLINES = "1.000000" +SCANLINE_DARK = "0.100000" +SCANLINES_BLEEDING = "0.825000" +SCANLINE_FLICKERING = "1.000000" +SCANLINE_FLICKERING_POWER = "0.850000" +DO_BLOOM = "1.000000" +BLOOM_MIX = "0.150000" +BLOOM_SIZE = "1.500000" +BLOOM_POWER = "8.000000" +BLOOM_GAMMA_OUT = "1.200000" +DO_CURVATURE = "1.000000" +GEOM_WARP_X = "0.800000" +GEOM_WARP_Y = "0.850000" +GEOM_CORNER_SIZE = "0.005000" +GEOM_CORNER_SMOOTH = "700.000000" +DO_BEZEL = "1.000000" +BEZEL_IMAGE_BORDER = "1.020000" +AMBI_FALLOFF = "0.600000" +AMBI_POWER = "2.000000" +DO_VIGNETTE = "1.000000" +V_SIZE = "1.900000" +V_POWER = "1.050000" +DO_SPOT = "1.000000" +S_POSITION = "194.000000" +S_POWER = "0.200000" +textures = "monitor_body;bg_under;bg_over" +monitor_body = "textures/monitor_body.png" +monitor_body_linear = "true" +monitor_body_wrap_mode = "clamp_to_edge" +monitor_body_mipmap = "true" +bg_under = "textures/background_under.png" +bg_under_linear = "true" +bg_under_wrap_mode = "mirrored_repeat" +bg_under_mipmap = "true" +bg_over = "textures/background_over.png" +bg_over_linear = "true" +bg_over_wrap_mode = "mirrored_repeat" +bg_over_mipmap = "true"