<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Unofficial Hotscreen Community - Mods]]></title>
		<link>https://hotscreen.dominated.dev/</link>
		<description><![CDATA[Unofficial Hotscreen Community - https://hotscreen.dominated.dev]]></description>
		<pubDate>Mon, 25 May 2026 00:07:21 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Custom Payment Window with Balance, Card Validation, Penalties]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=82</link>
			<pubDate>Sat, 16 May 2026 23:37:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2889">emerladCoder</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=82</guid>
			<description><![CDATA[A custom payment scene taking inspiration from several posts on this forum (ex. LoserCard from Xx_Noice_xX and Total Spend from TerriblePerson123), made with AI as I'm not familiar with Godot, so there are likely some bugs or edge cases I did not find.<br />
<br />
The idea is that you have some starting balance, but you will need to watch some degrading videos (or w/e your preference is, you could make it ADS for example) to earn money for you balance to buy the subscription levels. The system tracks your total amount spend and your current balance.<br />
<br />
Feel free to do w/e with this code as I did not write it, I only directed AI to write it, so I take no ownership.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span>:<ul class="mycode_list"><li>Tracks Total Spend<br />
</li>
<li>Window Timeout (configurable amounts of time), the payment window will timeout and close itself if you ignore it<br />
</li>
<li>Custom Wallet Balance (configurable start amount)<br />
</li>
<li>Earn Money for you Balance by Watching Custom Videos<br />
</li>
<li>Payment Window has a Randomly Generated Credit Card that you must enter so that you can't just enter random data (configurable chance to change each time it loads)<br />
</li>
<li>Penalties if you enter the wrong credit card info, if you try to pay when you don't have enough balance, or ignore the window and it times out (no penalty if you ignore at max level)<br />
</li>
<li>Penalties apply a multiplier to how much it payments cost<br />
</li>
<li>You can lower you Penalties by making a successful payment<br />
</li>
<li>Reset button to reset penalties, balance, and total spent for the Payment Window (separate from the reset for the game/collection)<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Setup</span>: <br />
<ol type="1" class="mycode_list"><li>Set Money Scaling to 1.0 (so the amount of money you get will be 100, which now becomes your credits which is now different from the money in the payment scene). You can set the Looking Cost to whatever you want to get the time you want at each level and the Currency Symbol will still be used on the payment scene. <br />
</li>
<li>I would also update your Level Names to mention Credits instead of your currency, as you are now using your currency to buy credits instead of intermingling the two. Below is what I have set for Level names for 5 levels.<br />
FREE USER\nAccess denied !;SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};You can adjust cost_multiplier variable as mentioned below, to adjust the prices in the payment scene, I have it set to 0.1 so with the default 1.0 Money Scaling Tier 1 costs &#36;10, then Tier 2 &#36;20, .... You can increase or decrease this to your liking along with the other variables like starting balance. With the way the Levels collection works you always only get the 100 worth of money at the current Level, so to make it extra spicy you can set the advanced setting "Progress when losing a level" to 0 so that if you drop down a level it drops you all the way back to level 1 (but that is up to you, if you don't then you will have 100 credits at the previous level when dropping a level)</li>
<li>Extract the custom_payment_system.zip into your CUSTOM_DATA folder. Inside the EarnVideos folder place videos that will be played to earn money for your account balance. <br />
</li>
</ol>
<br />
The resulting folder should look like:<br />
CUSTOM_DATA<br />
└─custom_payment_system<br />
     └─EarnVideos<br />
         └─PLACE OGV VIDEOS HERE<br />
     └─custom_payment_system.paymenu.tscn<br />
<br />
<span style="font-weight: bold;" class="mycode_b">For configuration edit the below variables in the scene, I have tired added comments to explain what they control:</span><br />
# custom variables<br />
var countdown_seconds: float = 30.0  # Set to 0 or less to disable the auto-close timer<br />
var countdown_pay_additional_second: float = 30.0 # additional seconds to add when clicking on pay for refill or subscription<br />
var countdown_processing_payment_failed: float = 30.0 # time to set timer to when failing to process payment<br />
# cardholder name<br />
var card_holder_name: String = \"Cuck Loser\"<br />
var card_change: float = 10.0 # percent chance that the card generated will change (0.0 - 100.00 in %)<br />
var initial_balance: float = 100.0 # starting card balance<br />
var for_x_credits: float = 100.0 # how many credits you get, please match this to how much money the default system gives you when purchasing a level for example at money scaling 1.0 this is 100.0<br />
var cost_multiplier: float = 0.1 # custom amount to muliply the cost_to_refill and cost_for_better_subscription by when opening the payment window<br />
var cost_penalty_multipler: float = 1.26 # amount to multiply the cost by for each penalty<br />
var max_number_penalty: int = 10 # max number of penalties<br />
var earn_video_folder: String = \"CUSTOM_DATA/custom_payment_system/EarnVideos\"<br />
var earn_video_height: int = 300 #max height of the video<br />
var earn_video_time: float = 15.0 # time needed to watch video<br />
var earn_video_percent_change: float = 25.0 # chance to switch to another random video when clicking get paid (0.0 - 100.00 in %)<br />
var earn_money_amount: float = 10.0 # amount of money earned for watching the video<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=148" target="_blank" title="">custom_payment_system.zip</a> (Size: 9.39 KB / Downloads: 43)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=149" target="_blank" title="">hotscreen_2026-05-16_1935.png</a> (Size: 42.18 KB / Downloads: 139)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=150" target="_blank" title="">hotscreen_2026-05-16_1937.png</a> (Size: 59.71 KB / Downloads: 116)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=151" target="_blank" title="">hotscreen_2026-05-16_1938.png</a> (Size: 108.6 KB / Downloads: 121)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[A custom payment scene taking inspiration from several posts on this forum (ex. LoserCard from Xx_Noice_xX and Total Spend from TerriblePerson123), made with AI as I'm not familiar with Godot, so there are likely some bugs or edge cases I did not find.<br />
<br />
The idea is that you have some starting balance, but you will need to watch some degrading videos (or w/e your preference is, you could make it ADS for example) to earn money for you balance to buy the subscription levels. The system tracks your total amount spend and your current balance.<br />
<br />
Feel free to do w/e with this code as I did not write it, I only directed AI to write it, so I take no ownership.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span>:<ul class="mycode_list"><li>Tracks Total Spend<br />
</li>
<li>Window Timeout (configurable amounts of time), the payment window will timeout and close itself if you ignore it<br />
</li>
<li>Custom Wallet Balance (configurable start amount)<br />
</li>
<li>Earn Money for you Balance by Watching Custom Videos<br />
</li>
<li>Payment Window has a Randomly Generated Credit Card that you must enter so that you can't just enter random data (configurable chance to change each time it loads)<br />
</li>
<li>Penalties if you enter the wrong credit card info, if you try to pay when you don't have enough balance, or ignore the window and it times out (no penalty if you ignore at max level)<br />
</li>
<li>Penalties apply a multiplier to how much it payments cost<br />
</li>
<li>You can lower you Penalties by making a successful payment<br />
</li>
<li>Reset button to reset penalties, balance, and total spent for the Payment Window (separate from the reset for the game/collection)<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Setup</span>: <br />
<ol type="1" class="mycode_list"><li>Set Money Scaling to 1.0 (so the amount of money you get will be 100, which now becomes your credits which is now different from the money in the payment scene). You can set the Looking Cost to whatever you want to get the time you want at each level and the Currency Symbol will still be used on the payment scene. <br />
</li>
<li>I would also update your Level Names to mention Credits instead of your currency, as you are now using your currency to buy credits instead of intermingling the two. Below is what I have set for Level names for 5 levels.<br />
FREE USER\nAccess denied !;SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};SUBSCRIBER Level {level}\nCredits remaining : {money};You can adjust cost_multiplier variable as mentioned below, to adjust the prices in the payment scene, I have it set to 0.1 so with the default 1.0 Money Scaling Tier 1 costs &#36;10, then Tier 2 &#36;20, .... You can increase or decrease this to your liking along with the other variables like starting balance. With the way the Levels collection works you always only get the 100 worth of money at the current Level, so to make it extra spicy you can set the advanced setting "Progress when losing a level" to 0 so that if you drop down a level it drops you all the way back to level 1 (but that is up to you, if you don't then you will have 100 credits at the previous level when dropping a level)</li>
<li>Extract the custom_payment_system.zip into your CUSTOM_DATA folder. Inside the EarnVideos folder place videos that will be played to earn money for your account balance. <br />
</li>
</ol>
<br />
The resulting folder should look like:<br />
CUSTOM_DATA<br />
└─custom_payment_system<br />
     └─EarnVideos<br />
         └─PLACE OGV VIDEOS HERE<br />
     └─custom_payment_system.paymenu.tscn<br />
<br />
<span style="font-weight: bold;" class="mycode_b">For configuration edit the below variables in the scene, I have tired added comments to explain what they control:</span><br />
# custom variables<br />
var countdown_seconds: float = 30.0  # Set to 0 or less to disable the auto-close timer<br />
var countdown_pay_additional_second: float = 30.0 # additional seconds to add when clicking on pay for refill or subscription<br />
var countdown_processing_payment_failed: float = 30.0 # time to set timer to when failing to process payment<br />
# cardholder name<br />
var card_holder_name: String = \"Cuck Loser\"<br />
var card_change: float = 10.0 # percent chance that the card generated will change (0.0 - 100.00 in %)<br />
var initial_balance: float = 100.0 # starting card balance<br />
var for_x_credits: float = 100.0 # how many credits you get, please match this to how much money the default system gives you when purchasing a level for example at money scaling 1.0 this is 100.0<br />
var cost_multiplier: float = 0.1 # custom amount to muliply the cost_to_refill and cost_for_better_subscription by when opening the payment window<br />
var cost_penalty_multipler: float = 1.26 # amount to multiply the cost by for each penalty<br />
var max_number_penalty: int = 10 # max number of penalties<br />
var earn_video_folder: String = \"CUSTOM_DATA/custom_payment_system/EarnVideos\"<br />
var earn_video_height: int = 300 #max height of the video<br />
var earn_video_time: float = 15.0 # time needed to watch video<br />
var earn_video_percent_change: float = 25.0 # chance to switch to another random video when clicking get paid (0.0 - 100.00 in %)<br />
var earn_money_amount: float = 10.0 # amount of money earned for watching the video<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=148" target="_blank" title="">custom_payment_system.zip</a> (Size: 9.39 KB / Downloads: 43)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=149" target="_blank" title="">hotscreen_2026-05-16_1935.png</a> (Size: 42.18 KB / Downloads: 139)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=150" target="_blank" title="">hotscreen_2026-05-16_1937.png</a> (Size: 59.71 KB / Downloads: 116)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=151" target="_blank" title="">hotscreen_2026-05-16_1938.png</a> (Size: 108.6 KB / Downloads: 121)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Triangle/Hexagon Pixelation Filter]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=81</link>
			<pubDate>Sat, 16 May 2026 17:30:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2411">Radack</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=81</guid>
			<description><![CDATA[Do you watch a lot of censored porn? Are you tired of always looking at the same square pixelation filter? Boyyy, do I have the solution for you! Introducing the new triangle and hexagon pixelation filters! They do essentially the same thing as the good ol' "Pixelated filter" you know and love from Hotscreen. But instead of using squares for censoring they use triangles and hexagons (duh). I just made these because I think some variety is always fun and keeps things fresh.<br />
<br />
I offer you two variations for both of these filters: a static and a dynamic one. The static one is a simple shader. You can edit the size of the triangles/hexagons in Hotscreen and all of them will be the same size. The dynamic variant scales the size of the triangles/hexagons depending on the size of the covered area. This means that the larger the censored area, the larger the triangles/hexagons become. This is essentially equivalent to the "Adapt pixel size" feature that comes with the standard pixelation filter. <br />
<br />
The static variants are straightforward to use: just download the attached .zip file, unpack it and put the included folder in your CUSTOM_DATA folder. Then you can select the filter in Hotscreen and edit the size of the triangles/hexagons in the editor window. The dynamic variants are also included in the folder and also come with their own filter, which you can easily add in Hotscreen. However, to change the size for the dynamic variant you have to open the included .box.tscn file with any text editor and change the "triangle_size" parameter in line 66 or the "hex_size" parameter in line 59. You then have to reload the scene in Hotscreen ("Edit filter"&gt;"Select custom scene"). Please note that you have to set larger sizes for the dynamic variants than the static ones, as they are multiplied by a factor between 0 and 1 (meaning they get smaller).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Some technical information for those who are curious</span><br />
<br />
If you take a look at the custom script included in either of the dynamic variants, you will see that the size doesn't actually scale with the covered area, but with the larger of the two sides of the bounding box (i.e. if the covered area is higher than it is wide, then the size scalar will be computed based on the height instead of the width). This is to prevent a quadratic falloff of the size which would make it seem to small on smaller areas and too large on larger areas. The size scalar is then computed as the ratio between the screen side and the bounding box side (i.e. it will be 1 if the bounding box covers the entire screen, otherwise it will be between 0-1). <br />
You will also notice that i set the shader parameters explicitly when defining the shader material. I tried setting them as a default parameter in the shader code itself, but that resulted in all sizes being the same regardless of the scaling factor. What I do instead is duplicate the material for every instance of a Polygon2D, so they all get their own shader material with their own shader parameter. I am not sure why it has to be done this way, but it works. Setting the size as a default parameter does kinda work if you restart Hotscreen every time you change it, but I deemed that to be too much work (also I can't have you see something uncensored as you are restarting Hotscreen, right? Betas have to stay censored at all times!)<br />
<br />
You are free to do with this code whatever you want. The shader code itself was written by Gemini. The script for dynamically scaling the size was largely written by me with some help from Gemini, so I would appreciate it if you gave credit if you decide to use that for your own filters/mods.<br />
Feel free to post a reply or message me if you find any bugs (though I can't promise I'll be able to fix them)!<br />
<br />
I hope you have some fun with these filters and stay censored, Betas!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=146" target="_blank" title="">HexagonPixelation.zip</a> (Size: 6.65 KB / Downloads: 60)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=147" target="_blank" title="">TrianglePixelation.zip</a> (Size: 6.75 KB / Downloads: 53)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Do you watch a lot of censored porn? Are you tired of always looking at the same square pixelation filter? Boyyy, do I have the solution for you! Introducing the new triangle and hexagon pixelation filters! They do essentially the same thing as the good ol' "Pixelated filter" you know and love from Hotscreen. But instead of using squares for censoring they use triangles and hexagons (duh). I just made these because I think some variety is always fun and keeps things fresh.<br />
<br />
I offer you two variations for both of these filters: a static and a dynamic one. The static one is a simple shader. You can edit the size of the triangles/hexagons in Hotscreen and all of them will be the same size. The dynamic variant scales the size of the triangles/hexagons depending on the size of the covered area. This means that the larger the censored area, the larger the triangles/hexagons become. This is essentially equivalent to the "Adapt pixel size" feature that comes with the standard pixelation filter. <br />
<br />
The static variants are straightforward to use: just download the attached .zip file, unpack it and put the included folder in your CUSTOM_DATA folder. Then you can select the filter in Hotscreen and edit the size of the triangles/hexagons in the editor window. The dynamic variants are also included in the folder and also come with their own filter, which you can easily add in Hotscreen. However, to change the size for the dynamic variant you have to open the included .box.tscn file with any text editor and change the "triangle_size" parameter in line 66 or the "hex_size" parameter in line 59. You then have to reload the scene in Hotscreen ("Edit filter"&gt;"Select custom scene"). Please note that you have to set larger sizes for the dynamic variants than the static ones, as they are multiplied by a factor between 0 and 1 (meaning they get smaller).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Some technical information for those who are curious</span><br />
<br />
If you take a look at the custom script included in either of the dynamic variants, you will see that the size doesn't actually scale with the covered area, but with the larger of the two sides of the bounding box (i.e. if the covered area is higher than it is wide, then the size scalar will be computed based on the height instead of the width). This is to prevent a quadratic falloff of the size which would make it seem to small on smaller areas and too large on larger areas. The size scalar is then computed as the ratio between the screen side and the bounding box side (i.e. it will be 1 if the bounding box covers the entire screen, otherwise it will be between 0-1). <br />
You will also notice that i set the shader parameters explicitly when defining the shader material. I tried setting them as a default parameter in the shader code itself, but that resulted in all sizes being the same regardless of the scaling factor. What I do instead is duplicate the material for every instance of a Polygon2D, so they all get their own shader material with their own shader parameter. I am not sure why it has to be done this way, but it works. Setting the size as a default parameter does kinda work if you restart Hotscreen every time you change it, but I deemed that to be too much work (also I can't have you see something uncensored as you are restarting Hotscreen, right? Betas have to stay censored at all times!)<br />
<br />
You are free to do with this code whatever you want. The shader code itself was written by Gemini. The script for dynamically scaling the size was largely written by me with some help from Gemini, so I would appreciate it if you gave credit if you decide to use that for your own filters/mods.<br />
Feel free to post a reply or message me if you find any bugs (though I can't promise I'll be able to fix them)!<br />
<br />
I hope you have some fun with these filters and stay censored, Betas!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=146" target="_blank" title="">HexagonPixelation.zip</a> (Size: 6.65 KB / Downloads: 60)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=147" target="_blank" title="">TrianglePixelation.zip</a> (Size: 6.75 KB / Downloads: 53)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dual Pass Gaussian Blur]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=80</link>
			<pubDate>Thu, 14 May 2026 00:17:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2411">Radack</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=80</guid>
			<description><![CDATA[This is a dual pass implementation of a gaussian blur filter. If you want to know what that means you can read the sections below that explain it in detail. Basically it is a way more efficient implementation with no quality loss. If you just want to goon, read the first section and skip the rest. Please let me know if this works on your PC. As per my current understanding, this implementation shouldn't work but it does (you can read about that in the last section if you care). I probably won't be able to do shit about it if it doesn't work, but im curious nonetheless. <br />
Shoutout to <a href="https://hotscreen.dominated.dev/showthread.php?tid=68" target="_blank" rel="noopener" class="mycode_url">lamba5da</a> and <a href="https://hotscreen.dominated.dev/showthread.php?tid=71" target="_blank" rel="noopener" class="mycode_url">siamirold</a> for creating their single pass variants, which inspired me to do this!<br />
You are free to use this code as you see fit, but please do credit me if you decide to publish any mods based on this work! In theory, you should be able to reuse most of this code for any dual pass shader, you just need to replace the shader code. <br />
Also, fuck LLMs. I swear, learning how to do this myself was faster than the days i spent asking Gemini to do it (&lt;- this might be a skill issue).<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How do i use this for gooning purposes?</span><br />
<br />
Just download the attached .zip file and unpack it. Put the .box.tscn file in your CUSTOM_DATA folder. Then add a new filter to your Hotscreen and select Mods&gt;Box Scene. Click "Edit filter" and click on "Select custom scene". Select the file you just downloaded and enjoy! If you want to change the strength of the blur you have to open the .box.tscn file with any text editor, change the "sigma" parameter in line 9 to your desired strength (higher = stronger blur) and then reload the scene in Hotscreen ("Select custom scene"). You can set sigma higher than 50, however you need to adjust line 67 (haha 67 lmao) in the code (rect = rect.grow(100)). Simply set the parameter of grow() to 2*sigma and you are good. If you set sigma lower than 50 you do not need to adjust this paramter. If you want to know how and why it works this way read the sections below.<br />
There are a few "quirks" you should be aware of:<br />
- This filter does not work with the "Inverted boxes" feature of Hotscreen. For whatever reason it breaks the second blur pass, leaving you with an image that is only blurred in one direction. If you want something similiar set the size of the filter to maximum and use an "Always display screen" filter below this one.<br />
- If your PC enters standby mode while Hotscreen is running or if you pause Hotscreen with this filter active, the filter will not work anymore. It will just output a solid black color where the blur is supposed to be. In this case you have to restart Hotscreen to make it work again.<br />
- Please be aware that while this is more performant than the single pass variant, it can still be performance intensive if you blur large areas of the screen with a high sigma value.<br />
- This filter "stacks" with other filter that are shown below it. I believe this is due to how i sample the screen texture in my code, but I am honestly not sure and too lazy to test it. I personally think this is a pretty neat feature. If it bothers you for some reason, you'll have to adjust the code to use the "normal Hotscreen way" of sampling the screen texture (or ask an LLM to do it). You can find the "normal way" in the prompt for a custom shader effect inside Hotscreen<br />
- I am sure there are other things that could go wrong. Let me know if you find any! (Can't promise I'll be able to fix it though!)<br />
<br />
The rest of this post discusses some technical details that are not relevant if you just want to use the filter.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What even is the problem?</span><br />
<br />
If you have used one of the gaussian blur shaders available on this website, you probably noticed they have a pretty heavy performance impact. This is due to how many pixels they have to sample. A single pass gaussian blur shader with radius 10 has to sample 10*10=100 pixels in a square grid. For radius 50 that's 50*50=2500 pixels. Generally, for a radius of n pixels you need to sample n*n pixels. And you have to do that for every single pixel you want to blur! That is very performance expensive, especially if you need to perform some arithmetic operations on all of those pixels (which we do, since we apply a shader to them). <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The solution</span><br />
<br />
A gaussian blur shader (or to be more precise the gaussian blur convolution kernel) is separable. What does that mean? You can split it into two distinct passes that each blur in different directions: the first pass blurs the image vertically, the second pass blurs it horizontally or vice versa. This singnificantly reduces the amount of work you have to do, as you no longer sample pixels in a square grid but in two lines (one horizontal, one vertical). For a blur with radius 10 you now only need to sample 10*2=20 pixels and for radius 50 you only need 50*2=100 pixels. As you can see, we have significantly lowered the amount of pixels we need to sample and subsequently perform arithmetic operations on. Now we only need to sample 2*n pixels for a blur with radius n. <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How does this work?</span><br />
<br />
This part is based on my understanding of things. Not everything is necessarily going to be 100% correct. If you know more about any of this than I do feel free to educate me! <br />
Okay, so basics first: We are using a canvas_item shader in Godot to apply our blur. This shader is simply applied to all pixels in our image. If we apply a shader to a certain Node in Godot, only the parts of the image covered by that Node are affected by the shader. A Node is any object in Godot, for example a ColorRect or a Polygon2D (if you don't know what those are you'll have to look it up)<br />
Implementing a multi pass blur in a single shader is (as far as I am aware) not possible, because we iterate over each pixels only once This is why we need to construct our own Godot scene. Our parent node is a Polygon2D as it is required by Hotscreen. Hotscreen manipulates this Polygon2D to cover anything naughty on the screen. A Polygon2D is just a collection of points that form a shape (in the case of Hotscreen a rectangle). We can apply our first blur pass to this Polygon2D as a shader. <br />
Pretty easy so far, right? Now comes the tricky part. We could just create a copy of our Polygon2D, apply the second pass to it and be done with it. That is what I tried at first, however it did not work out very well. The second pass of the blur assumes that all the pixels it samples have already been blurred previously. This i no problem for most of our pixels. However, if we are near the edge of our Polygon2D and our radius is sufficiently high, we will be trying to sample pixels that are outside our Polygon. These pixels obviously have not been blurred previously, which will lead to streaky artifacts in our blurred output. You can see this for yourself if you set the parameter of grow() to a number smaller than sigma. Depending on the image you are viewing these artifacts may be more or less visible. <br />
So in our first pass we have to somehow blur an area that is larger than the area we are actually trying to censor. This is handled by the custom script in the scene file. This script computes the bounding box of our Polygon2D and then expands it by 100 pixels. The bounding box is essentially just a rectangle that fits all points of our Polygon2D inside of it. We then place a ColorRect inside our bounding box and apply the other blur pass to it as a shader. Now our ColorRect blurs a larger area than our Polygon2D. Since the ColorRect is a child of our Polygon2D Godot draws it first. So our ColorRect is drawn first, applies the first pass, then our Polygon2D is drawn on top of it and apllies the second pass.<br />
Now we just have one more problem to solve: our ColorRect is still visible in its entirety. The solution is pretty simple: we just have to enable clipping on our Polygon2D. This basically uses the Polygon2D as a mask and only draws our ColorRect inside the Polygon2D. Everything else is cut off. Now we have a clean dual pass implementation for our gaussian blur! Yippie! We are done! <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The problem with the solution</span><br />
<br />
...excpet I lied to you. See, in Godot parents are drawn first and then their children are drawn afterwards. So in theory, our Polygon2D is drawn first and then our ColorRect is drawn on top of it. However, that would mean, that our ColorRect is sampling unblurred pixels which should lead to artifacts. You can see this if you set clip_children=0 in the code and pay attention to the edges of our previously blurred area. And this is where my understanding of the Godot rendering pipeline ends. In Godot there are two ways of clipping children: "Clip only" which means the parent does not get drawn and "Clip + Draw" which does draw the parent. This filter only works, if you set the clipping to "Clip only" (which corresponds to clip_childern=1 in the code). That means the parent (our Polygon2D) does not get drawn at all. However its shader still somehow gets applied, as i get a nice gaussian blur. Furthermore, it seems to get drawn after its children, as there are no artifacts in my blur. I am not sure why it works this way but it does.<br />
This is not a big problem in and of itself, as it works just fine. However, the way this code is currently set up prevents me from doing some things:<br />
- I can not access the shader material in my script. If i try to access it in any way my second pass just breaks and I get an image that is only blurred in one direction This prevents me from scaling the blur radius (the parameter of grow()) automatically depending on sigma, hence why you have to set it manually.<br />
- That also prevents me from scaling sigma depending on the size of the Polygon2D. This is something you will see in some of my other shaders, where I set the strength of the filter depending on the size of the covered area. This is essentially equivalent to the "Adapt pixel size" feature of the built-in pixelated filter of Hotscreen<br />
- Even just introducing new variables to the Script that do absolutely nothing seem to break the code. This is absolutely beyond me and I am sure i must be doing something wrong or Hotscreen is just really fucked up. I have tested multiple variants of my code in the Godot editor, where they worked just fine, only to find out that they do not work in Hotscreen at all.<br />
<br />
If you have made it this far there must be something wrong with you quite frankly. Who in their right mind would read all of that for a beta-censoring program?? I appreciate you nonetheless though and maybe you even learned something. If you know how to fix any of this mess, please let me know! I have tried many different approaches but maybe you know more than me. And even if you don't, I hope you have some "fun" with this silly little filter.<br />
<br />
Stay censored, Betas!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=145" target="_blank" title="">DualPassGaussianBlur.zip</a> (Size: 1.15 KB / Downloads: 72)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[This is a dual pass implementation of a gaussian blur filter. If you want to know what that means you can read the sections below that explain it in detail. Basically it is a way more efficient implementation with no quality loss. If you just want to goon, read the first section and skip the rest. Please let me know if this works on your PC. As per my current understanding, this implementation shouldn't work but it does (you can read about that in the last section if you care). I probably won't be able to do shit about it if it doesn't work, but im curious nonetheless. <br />
Shoutout to <a href="https://hotscreen.dominated.dev/showthread.php?tid=68" target="_blank" rel="noopener" class="mycode_url">lamba5da</a> and <a href="https://hotscreen.dominated.dev/showthread.php?tid=71" target="_blank" rel="noopener" class="mycode_url">siamirold</a> for creating their single pass variants, which inspired me to do this!<br />
You are free to use this code as you see fit, but please do credit me if you decide to publish any mods based on this work! In theory, you should be able to reuse most of this code for any dual pass shader, you just need to replace the shader code. <br />
Also, fuck LLMs. I swear, learning how to do this myself was faster than the days i spent asking Gemini to do it (&lt;- this might be a skill issue).<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How do i use this for gooning purposes?</span><br />
<br />
Just download the attached .zip file and unpack it. Put the .box.tscn file in your CUSTOM_DATA folder. Then add a new filter to your Hotscreen and select Mods&gt;Box Scene. Click "Edit filter" and click on "Select custom scene". Select the file you just downloaded and enjoy! If you want to change the strength of the blur you have to open the .box.tscn file with any text editor, change the "sigma" parameter in line 9 to your desired strength (higher = stronger blur) and then reload the scene in Hotscreen ("Select custom scene"). You can set sigma higher than 50, however you need to adjust line 67 (haha 67 lmao) in the code (rect = rect.grow(100)). Simply set the parameter of grow() to 2*sigma and you are good. If you set sigma lower than 50 you do not need to adjust this paramter. If you want to know how and why it works this way read the sections below.<br />
There are a few "quirks" you should be aware of:<br />
- This filter does not work with the "Inverted boxes" feature of Hotscreen. For whatever reason it breaks the second blur pass, leaving you with an image that is only blurred in one direction. If you want something similiar set the size of the filter to maximum and use an "Always display screen" filter below this one.<br />
- If your PC enters standby mode while Hotscreen is running or if you pause Hotscreen with this filter active, the filter will not work anymore. It will just output a solid black color where the blur is supposed to be. In this case you have to restart Hotscreen to make it work again.<br />
- Please be aware that while this is more performant than the single pass variant, it can still be performance intensive if you blur large areas of the screen with a high sigma value.<br />
- This filter "stacks" with other filter that are shown below it. I believe this is due to how i sample the screen texture in my code, but I am honestly not sure and too lazy to test it. I personally think this is a pretty neat feature. If it bothers you for some reason, you'll have to adjust the code to use the "normal Hotscreen way" of sampling the screen texture (or ask an LLM to do it). You can find the "normal way" in the prompt for a custom shader effect inside Hotscreen<br />
- I am sure there are other things that could go wrong. Let me know if you find any! (Can't promise I'll be able to fix it though!)<br />
<br />
The rest of this post discusses some technical details that are not relevant if you just want to use the filter.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What even is the problem?</span><br />
<br />
If you have used one of the gaussian blur shaders available on this website, you probably noticed they have a pretty heavy performance impact. This is due to how many pixels they have to sample. A single pass gaussian blur shader with radius 10 has to sample 10*10=100 pixels in a square grid. For radius 50 that's 50*50=2500 pixels. Generally, for a radius of n pixels you need to sample n*n pixels. And you have to do that for every single pixel you want to blur! That is very performance expensive, especially if you need to perform some arithmetic operations on all of those pixels (which we do, since we apply a shader to them). <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The solution</span><br />
<br />
A gaussian blur shader (or to be more precise the gaussian blur convolution kernel) is separable. What does that mean? You can split it into two distinct passes that each blur in different directions: the first pass blurs the image vertically, the second pass blurs it horizontally or vice versa. This singnificantly reduces the amount of work you have to do, as you no longer sample pixels in a square grid but in two lines (one horizontal, one vertical). For a blur with radius 10 you now only need to sample 10*2=20 pixels and for radius 50 you only need 50*2=100 pixels. As you can see, we have significantly lowered the amount of pixels we need to sample and subsequently perform arithmetic operations on. Now we only need to sample 2*n pixels for a blur with radius n. <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How does this work?</span><br />
<br />
This part is based on my understanding of things. Not everything is necessarily going to be 100% correct. If you know more about any of this than I do feel free to educate me! <br />
Okay, so basics first: We are using a canvas_item shader in Godot to apply our blur. This shader is simply applied to all pixels in our image. If we apply a shader to a certain Node in Godot, only the parts of the image covered by that Node are affected by the shader. A Node is any object in Godot, for example a ColorRect or a Polygon2D (if you don't know what those are you'll have to look it up)<br />
Implementing a multi pass blur in a single shader is (as far as I am aware) not possible, because we iterate over each pixels only once This is why we need to construct our own Godot scene. Our parent node is a Polygon2D as it is required by Hotscreen. Hotscreen manipulates this Polygon2D to cover anything naughty on the screen. A Polygon2D is just a collection of points that form a shape (in the case of Hotscreen a rectangle). We can apply our first blur pass to this Polygon2D as a shader. <br />
Pretty easy so far, right? Now comes the tricky part. We could just create a copy of our Polygon2D, apply the second pass to it and be done with it. That is what I tried at first, however it did not work out very well. The second pass of the blur assumes that all the pixels it samples have already been blurred previously. This i no problem for most of our pixels. However, if we are near the edge of our Polygon2D and our radius is sufficiently high, we will be trying to sample pixels that are outside our Polygon. These pixels obviously have not been blurred previously, which will lead to streaky artifacts in our blurred output. You can see this for yourself if you set the parameter of grow() to a number smaller than sigma. Depending on the image you are viewing these artifacts may be more or less visible. <br />
So in our first pass we have to somehow blur an area that is larger than the area we are actually trying to censor. This is handled by the custom script in the scene file. This script computes the bounding box of our Polygon2D and then expands it by 100 pixels. The bounding box is essentially just a rectangle that fits all points of our Polygon2D inside of it. We then place a ColorRect inside our bounding box and apply the other blur pass to it as a shader. Now our ColorRect blurs a larger area than our Polygon2D. Since the ColorRect is a child of our Polygon2D Godot draws it first. So our ColorRect is drawn first, applies the first pass, then our Polygon2D is drawn on top of it and apllies the second pass.<br />
Now we just have one more problem to solve: our ColorRect is still visible in its entirety. The solution is pretty simple: we just have to enable clipping on our Polygon2D. This basically uses the Polygon2D as a mask and only draws our ColorRect inside the Polygon2D. Everything else is cut off. Now we have a clean dual pass implementation for our gaussian blur! Yippie! We are done! <br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The problem with the solution</span><br />
<br />
...excpet I lied to you. See, in Godot parents are drawn first and then their children are drawn afterwards. So in theory, our Polygon2D is drawn first and then our ColorRect is drawn on top of it. However, that would mean, that our ColorRect is sampling unblurred pixels which should lead to artifacts. You can see this if you set clip_children=0 in the code and pay attention to the edges of our previously blurred area. And this is where my understanding of the Godot rendering pipeline ends. In Godot there are two ways of clipping children: "Clip only" which means the parent does not get drawn and "Clip + Draw" which does draw the parent. This filter only works, if you set the clipping to "Clip only" (which corresponds to clip_childern=1 in the code). That means the parent (our Polygon2D) does not get drawn at all. However its shader still somehow gets applied, as i get a nice gaussian blur. Furthermore, it seems to get drawn after its children, as there are no artifacts in my blur. I am not sure why it works this way but it does.<br />
This is not a big problem in and of itself, as it works just fine. However, the way this code is currently set up prevents me from doing some things:<br />
- I can not access the shader material in my script. If i try to access it in any way my second pass just breaks and I get an image that is only blurred in one direction This prevents me from scaling the blur radius (the parameter of grow()) automatically depending on sigma, hence why you have to set it manually.<br />
- That also prevents me from scaling sigma depending on the size of the Polygon2D. This is something you will see in some of my other shaders, where I set the strength of the filter depending on the size of the covered area. This is essentially equivalent to the "Adapt pixel size" feature of the built-in pixelated filter of Hotscreen<br />
- Even just introducing new variables to the Script that do absolutely nothing seem to break the code. This is absolutely beyond me and I am sure i must be doing something wrong or Hotscreen is just really fucked up. I have tested multiple variants of my code in the Godot editor, where they worked just fine, only to find out that they do not work in Hotscreen at all.<br />
<br />
If you have made it this far there must be something wrong with you quite frankly. Who in their right mind would read all of that for a beta-censoring program?? I appreciate you nonetheless though and maybe you even learned something. If you know how to fix any of this mess, please let me know! I have tried many different approaches but maybe you know more than me. And even if you don't, I hope you have some "fun" with this silly little filter.<br />
<br />
Stay censored, Betas!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=145" target="_blank" title="">DualPassGaussianBlur.zip</a> (Size: 1.15 KB / Downloads: 72)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[random filter + changing pixel density!! v3]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=79</link>
			<pubDate>Wed, 13 May 2026 18:38:59 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2297">whatsthewahtsssfc</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=79</guid>
			<description><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=153" target="_blank" title="">screenshot_4122024708.png</a> (Size: 424.93 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment --><br />
<br />
credit to <a href="https://hotscreen.dominated.dev/member.php?action=profile&amp;uid=240" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3c699c;" class="mycode_color"><span style="font-family: 'Open Sans', Arial, Tahoma, sans-serif;" class="mycode_font"><span style="font-size: small;" class="mycode_size">theguywhodidit</span></span></span></a> for the original idea of the changing filters<br />
<br />
so i made a new mod that combines the pixel density randomizer with a filter switcher, figured id share!<br />
<br />
basically it does two things at once. first it rotates between your filters on a timer, randomly picking a different one every X seconds and hiding all the others. second it keeps doing the pixel drift thing from before, slowly bumping the pixelation up or down so it never sits at the same level the whole time. makes things feel unpredictable which i like<br />
<br />
<hr class="mycode_hr" />
<br />
install<br />
drop random_pixel_filter_combined.mod.tscn into CUSTOM_DATA/Built-in mods/, load it from the mods tab, make sure youre running a collection with pixel filters in it, then hit "refresh filter list" in the mod tab and itll scan your collection and show a weight spinbox for each filter it finds. thats it!!! ive also included the collection i use for this<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=141" target="_blank" title="">screenshot_1938894644.png</a> (Size: 115.29 KB / Downloads: 140)
<!-- end: postbit_attachments_attachment --><br />
<hr class="mycode_hr" />
<br />
filter weights<br />
controls how often each filter gets picked, like a raffle. higher number = more tickets = shows up more often. weight 0 = never picked. new filters auto-register at weight 1 when you hit refresh<br />
i set mine up like this:<ul class="mycode_list"><li>everything pixelated: 60<br />
</li>
<li>eyes visible: 16<br />
</li>
<li>pits/stomach/feet visible: 6<br />
</li>
<li>clothed: 5<br />
</li>
<li>face visible: 4<br />
</li>
<li>ass+pussy: 2<br />
</li>
<li>tits: 1<br />
</li>
<li>full nude: 1<br />
<br />
</li>
</ul>
so it spends most of its time fully censored and only occasionally lands on the spicy stuff. obviously set these to whatever works for you<br />
<br />
ive also attached my collection i use with it, it uses inverted censors but any pixel censor will work the exact same.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=143" target="_blank" title="">screenshot_2097278619.png</a> (Size: 96.55 KB / Downloads: 145)
<!-- end: postbit_attachments_attachment --><br />
<br />
<hr class="mycode_hr" />
settings<br />
you can tweak basically everything in the mod tab. switch interval, pixel step size, min/max pixel size, odds of going up vs down. all saves between sessions so you dont have to reset it every time. theres also a "switch now" button if you want to manually trigger a filter change<br />
<br />
<hr class="mycode_hr" />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=152" target="_blank" title="">screenshot_1756165709.png</a> (Size: 359.81 KB / Downloads: 36)
<!-- end: postbit_attachments_attachment --><br />
modes<br />
modes control the personality of the pixel density changes and auto-rotate on a timer. checkbox to lock it to one mode if you want<ul class="mycode_list"><li> GOOD BOY — strongly biases toward low pixelation, keeps things mostly clear<br />
</li>
<li> AVERAGE BETA — balanced, no preference either way<br />
</li>
<li> BAD PUP — biases toward heavier pixelation, gets more censored over time<br />
</li>
<li> CHAOS MODE — completely random direction every tick, unpredictable<br />
</li>
<li> RHYTHM — oscillates between clear and pixelated like a slow wave<br />
</li>
<li> PARANOID — moderate bias toward heavier, slightly unpredictable<br />
</li>
<li> PEEKABOO — randomly swings between nearly clear and very censored each tick, most teasing mode<br />
</li>
<li> SLEEPY — slowly drifts toward lower pixelation over time<br />
</li>
<li> HARDCORE — pushes hard toward maximum pixelation, stays heavily censored<br />
</li>
<li> MEDITATE — gentle bias toward low pixelation, calm and mostly clear<br />
<br />
</li>
</ul>
there are also some "floor/celling" options, like for bad pup, it will never go bellow a certain amount, same goes for the other options<br />
<hr class="mycode_hr" />
<br />
overlay<br />
theres a small overlay on screen. top left shows which filter is currently active, bottom left shows current pixel level and mode name. nothing intrusive<br />
<br />
<hr class="mycode_hr" />
lmk if anything breaks or you want me to add options<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=154" target="_blank" title="">random_pixel_filter_combined.mod.zip</a> (Size: 6.73 KB / Downloads: 32)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=155" target="_blank" title="">fullscreenpixel.zip</a> (Size: 1.69 KB / Downloads: 18)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=153" target="_blank" title="">screenshot_4122024708.png</a> (Size: 424.93 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment --><br />
<br />
credit to <a href="https://hotscreen.dominated.dev/member.php?action=profile&amp;uid=240" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3c699c;" class="mycode_color"><span style="font-family: 'Open Sans', Arial, Tahoma, sans-serif;" class="mycode_font"><span style="font-size: small;" class="mycode_size">theguywhodidit</span></span></span></a> for the original idea of the changing filters<br />
<br />
so i made a new mod that combines the pixel density randomizer with a filter switcher, figured id share!<br />
<br />
basically it does two things at once. first it rotates between your filters on a timer, randomly picking a different one every X seconds and hiding all the others. second it keeps doing the pixel drift thing from before, slowly bumping the pixelation up or down so it never sits at the same level the whole time. makes things feel unpredictable which i like<br />
<br />
<hr class="mycode_hr" />
<br />
install<br />
drop random_pixel_filter_combined.mod.tscn into CUSTOM_DATA/Built-in mods/, load it from the mods tab, make sure youre running a collection with pixel filters in it, then hit "refresh filter list" in the mod tab and itll scan your collection and show a weight spinbox for each filter it finds. thats it!!! ive also included the collection i use for this<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=141" target="_blank" title="">screenshot_1938894644.png</a> (Size: 115.29 KB / Downloads: 140)
<!-- end: postbit_attachments_attachment --><br />
<hr class="mycode_hr" />
<br />
filter weights<br />
controls how often each filter gets picked, like a raffle. higher number = more tickets = shows up more often. weight 0 = never picked. new filters auto-register at weight 1 when you hit refresh<br />
i set mine up like this:<ul class="mycode_list"><li>everything pixelated: 60<br />
</li>
<li>eyes visible: 16<br />
</li>
<li>pits/stomach/feet visible: 6<br />
</li>
<li>clothed: 5<br />
</li>
<li>face visible: 4<br />
</li>
<li>ass+pussy: 2<br />
</li>
<li>tits: 1<br />
</li>
<li>full nude: 1<br />
<br />
</li>
</ul>
so it spends most of its time fully censored and only occasionally lands on the spicy stuff. obviously set these to whatever works for you<br />
<br />
ive also attached my collection i use with it, it uses inverted censors but any pixel censor will work the exact same.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=143" target="_blank" title="">screenshot_2097278619.png</a> (Size: 96.55 KB / Downloads: 145)
<!-- end: postbit_attachments_attachment --><br />
<br />
<hr class="mycode_hr" />
settings<br />
you can tweak basically everything in the mod tab. switch interval, pixel step size, min/max pixel size, odds of going up vs down. all saves between sessions so you dont have to reset it every time. theres also a "switch now" button if you want to manually trigger a filter change<br />
<br />
<hr class="mycode_hr" />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=152" target="_blank" title="">screenshot_1756165709.png</a> (Size: 359.81 KB / Downloads: 36)
<!-- end: postbit_attachments_attachment --><br />
modes<br />
modes control the personality of the pixel density changes and auto-rotate on a timer. checkbox to lock it to one mode if you want<ul class="mycode_list"><li> GOOD BOY — strongly biases toward low pixelation, keeps things mostly clear<br />
</li>
<li> AVERAGE BETA — balanced, no preference either way<br />
</li>
<li> BAD PUP — biases toward heavier pixelation, gets more censored over time<br />
</li>
<li> CHAOS MODE — completely random direction every tick, unpredictable<br />
</li>
<li> RHYTHM — oscillates between clear and pixelated like a slow wave<br />
</li>
<li> PARANOID — moderate bias toward heavier, slightly unpredictable<br />
</li>
<li> PEEKABOO — randomly swings between nearly clear and very censored each tick, most teasing mode<br />
</li>
<li> SLEEPY — slowly drifts toward lower pixelation over time<br />
</li>
<li> HARDCORE — pushes hard toward maximum pixelation, stays heavily censored<br />
</li>
<li> MEDITATE — gentle bias toward low pixelation, calm and mostly clear<br />
<br />
</li>
</ul>
there are also some "floor/celling" options, like for bad pup, it will never go bellow a certain amount, same goes for the other options<br />
<hr class="mycode_hr" />
<br />
overlay<br />
theres a small overlay on screen. top left shows which filter is currently active, bottom left shows current pixel level and mode name. nothing intrusive<br />
<br />
<hr class="mycode_hr" />
lmk if anything breaks or you want me to add options<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=154" target="_blank" title="">random_pixel_filter_combined.mod.zip</a> (Size: 6.73 KB / Downloads: 32)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=155" target="_blank" title="">fullscreenpixel.zip</a> (Size: 1.69 KB / Downloads: 18)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Censors overlay always on top]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=73</link>
			<pubDate>Sun, 29 Mar 2026 17:59:11 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1194">juseyo</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=73</guid>
			<description><![CDATA[This mod uses the python script made by @Eilysia over on discord to put Hotscreen censors overlay always on top of other windows. This fixes the issue of some programs being displayed on top of the censors overlay.<br />
<br />
The mod enable you to have it automatically start with Hotscreen and handle killing the python script when Hotscreen is closed. You only need to have the mod loaded in one of your Hotscreen instances if you have multiple screens, the script handles all screens.<br />
<br />
Tested and working with:<ul class="mycode_list"><li>Edgeware++<br />
</li>
<li>Firefox's Picture-in-picture that allows you to have videos always on top as a floating window<br />
</li>
<li>Windows Photos app<br />
</li>
</ul>
Python 3 needs to be installed.<br />
<br />
Link: <a href="https://github.com/petjuseyo/HotscreenOverlayAlwaysOnTop" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/HotscreenOv...lwaysOnTop</a><br />
Direct download: <a href="https://github.com/petjuseyo/HotscreenOverlayAlwaysOnTop/archive/refs/heads/main.zip" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/HotscreenOv...s/main.zip</a><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=115" target="_blank" title="">Screenshot 2026-03-29 194108.png</a> (Size: 23.37 KB / Downloads: 348)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[This mod uses the python script made by @Eilysia over on discord to put Hotscreen censors overlay always on top of other windows. This fixes the issue of some programs being displayed on top of the censors overlay.<br />
<br />
The mod enable you to have it automatically start with Hotscreen and handle killing the python script when Hotscreen is closed. You only need to have the mod loaded in one of your Hotscreen instances if you have multiple screens, the script handles all screens.<br />
<br />
Tested and working with:<ul class="mycode_list"><li>Edgeware++<br />
</li>
<li>Firefox's Picture-in-picture that allows you to have videos always on top as a floating window<br />
</li>
<li>Windows Photos app<br />
</li>
</ul>
Python 3 needs to be installed.<br />
<br />
Link: <a href="https://github.com/petjuseyo/HotscreenOverlayAlwaysOnTop" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/HotscreenOv...lwaysOnTop</a><br />
Direct download: <a href="https://github.com/petjuseyo/HotscreenOverlayAlwaysOnTop/archive/refs/heads/main.zip" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/HotscreenOv...s/main.zip</a><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=115" target="_blank" title="">Screenshot 2026-03-29 194108.png</a> (Size: 23.37 KB / Downloads: 348)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Lock and Play Mod]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=72</link>
			<pubDate>Sun, 29 Mar 2026 00:59:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1194">juseyo</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=72</guid>
			<description><![CDATA[Hey everyone<br />
<br />
I made a mod that adds games when you're locked in Hotscreen and punishes you  <img src="https://hotscreen.dominated.dev/images/smilies/angel.png" alt="Angel" title="Angel" class="smilie smilie_10" /><br />
<br />
For now there's only 1 game: Dice! Roll the dice against the computer. If you score lower than the bot, time will be added. If you do better, time will me removed. There's also a full system that forces you to play x times in a defined duration (every day for example) and you get punished if you don't play enough (time added, countdown remove, collections toggled, up to you!). Chaster users will recognize some of it :eyes: <br />
<br />
I hope to add more games soon! Wheel of fortune with customizable actions is partially working and most of it is implemented, just need more time cooking.<br />
<br />
This mod does not have visual kinks or flairs, it's a purely functional lock extension with basic UI for now, but I hope some interesting features. Again, hope to have something more kinky one day.<br />
<br />
Please read a more detailed description and the limitations on the github page.<br />
<br />
Link: <a href="https://github.com/petjuseyo/LockAndPlayHotscreen" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/LockAndPlayHotscreen</a><br />
Direct download: <a href="https://github.com/petjuseyo/LockAndPlayHotscreen/archive/refs/heads/main.zip" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/LockAndPlay...s/main.zip</a><br />
<br />
Feel free to comment here if you found a bug or for anything else. And for the love of god don't fully lock yourself in it without fully testing it  <img src="https://hotscreen.dominated.dev/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=113" target="_blank" title="">dice-game-1.png</a> (Size: 86.39 KB / Downloads: 658)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=114" target="_blank" title="">dice-config-1.png</a> (Size: 81.11 KB / Downloads: 502)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hey everyone<br />
<br />
I made a mod that adds games when you're locked in Hotscreen and punishes you  <img src="https://hotscreen.dominated.dev/images/smilies/angel.png" alt="Angel" title="Angel" class="smilie smilie_10" /><br />
<br />
For now there's only 1 game: Dice! Roll the dice against the computer. If you score lower than the bot, time will be added. If you do better, time will me removed. There's also a full system that forces you to play x times in a defined duration (every day for example) and you get punished if you don't play enough (time added, countdown remove, collections toggled, up to you!). Chaster users will recognize some of it :eyes: <br />
<br />
I hope to add more games soon! Wheel of fortune with customizable actions is partially working and most of it is implemented, just need more time cooking.<br />
<br />
This mod does not have visual kinks or flairs, it's a purely functional lock extension with basic UI for now, but I hope some interesting features. Again, hope to have something more kinky one day.<br />
<br />
Please read a more detailed description and the limitations on the github page.<br />
<br />
Link: <a href="https://github.com/petjuseyo/LockAndPlayHotscreen" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/LockAndPlayHotscreen</a><br />
Direct download: <a href="https://github.com/petjuseyo/LockAndPlayHotscreen/archive/refs/heads/main.zip" target="_blank" rel="noopener" class="mycode_url">https://github.com/petjuseyo/LockAndPlay...s/main.zip</a><br />
<br />
Feel free to comment here if you found a bug or for anything else. And for the love of god don't fully lock yourself in it without fully testing it  <img src="https://hotscreen.dominated.dev/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=113" target="_blank" title="">dice-game-1.png</a> (Size: 86.39 KB / Downloads: 658)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=114" target="_blank" title="">dice-config-1.png</a> (Size: 81.11 KB / Downloads: 502)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Auto Screenshot Box Scene]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=70</link>
			<pubDate>Sun, 22 Mar 2026 15:28:44 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1767">lamba5da</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=70</guid>
			<description><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">I wanted to automate saving crops</span></span><span style="font-size: medium;" class="mycode_size"><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=106" target="_blank" title="">Captures.png</a> (Size: 8.26 MB / Downloads: 577)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">So I generated a box scene that does the work.<br />
</span></span><br />
</span><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ff4136;" class="mycode_color">Attention!!!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">This scene box may slow your PC, due to instant screenshots when selected bodypart recaptured by Hotscreen.</span><br />
<span style="font-weight: bold;" class="mycode_b">By default it saves files in directory "C:/Users/Admin/Downloads/" which you probably don't have, so:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. You need to open .tscn file with Notebook<br />
 2. Change <span style="font-weight: bold;" class="mycode_b">"C:/Users/Admin/Downloads/"</span> in <span style="font-weight: bold;" class="mycode_b">two lines </span></span><span style="font-size: small;" class="mycode_size">(screenshot)</span><span style="font-size: medium;" class="mycode_size"> to the path whereever you want captions to be stored.<br />
<span style="font-style: italic;" class="mycode_i">- You can just change "Admin" to your PC name, and captions will be stored in your system Downloads folder</span></span><br />
<span style="font-size: medium;" class="mycode_size"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=107" target="_blank" title="">PathChange.png</a> (Size: 27.07 KB / Downloads: 162)
<!-- end: postbit_attachments_attachment --><br />
3. <span style="font-weight: bold;" class="mycode_b">NOTE</span> that in path you <span style="font-weight: bold;" class="mycode_b">MUST</span> put <span style="font-weight: bold;" class="mycode_b">Forward slashes (/)</span> between folders. If you just copy path from Explorer, there will be <span style="font-weight: bold;" class="mycode_b">Back slashes (\)</span>, and Scene box <span style="font-weight: bold;" class="mycode_b">will not work</span>.<br />
 <br />
 </span><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Installation:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Just put .tscn file in your CUSTOM_DATA directory<br />
2. Open .tscn file with Notebook, change caption save directory<br />
3. To add follow in Hotscreen: Add a Filter - Mods - Box scene</span><span style="font-size: medium;" class="mycode_size"> - Edit filter - Select custom scene - AutoCapture.box.tscn<br />
</span><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i"><br />
*It just makes screenshots of captured bodyparts and saves them. I picked the best ones and made a collage</span></span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=105" target="_blank" title="">AutoCapture.box.zip</a> (Size: 3.11 KB / Downloads: 111)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">I wanted to automate saving crops</span></span><span style="font-size: medium;" class="mycode_size"><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=106" target="_blank" title="">Captures.png</a> (Size: 8.26 MB / Downloads: 577)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">So I generated a box scene that does the work.<br />
</span></span><br />
</span><span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ff4136;" class="mycode_color">Attention!!!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">This scene box may slow your PC, due to instant screenshots when selected bodypart recaptured by Hotscreen.</span><br />
<span style="font-weight: bold;" class="mycode_b">By default it saves files in directory "C:/Users/Admin/Downloads/" which you probably don't have, so:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. You need to open .tscn file with Notebook<br />
 2. Change <span style="font-weight: bold;" class="mycode_b">"C:/Users/Admin/Downloads/"</span> in <span style="font-weight: bold;" class="mycode_b">two lines </span></span><span style="font-size: small;" class="mycode_size">(screenshot)</span><span style="font-size: medium;" class="mycode_size"> to the path whereever you want captions to be stored.<br />
<span style="font-style: italic;" class="mycode_i">- You can just change "Admin" to your PC name, and captions will be stored in your system Downloads folder</span></span><br />
<span style="font-size: medium;" class="mycode_size"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=107" target="_blank" title="">PathChange.png</a> (Size: 27.07 KB / Downloads: 162)
<!-- end: postbit_attachments_attachment --><br />
3. <span style="font-weight: bold;" class="mycode_b">NOTE</span> that in path you <span style="font-weight: bold;" class="mycode_b">MUST</span> put <span style="font-weight: bold;" class="mycode_b">Forward slashes (/)</span> between folders. If you just copy path from Explorer, there will be <span style="font-weight: bold;" class="mycode_b">Back slashes (\)</span>, and Scene box <span style="font-weight: bold;" class="mycode_b">will not work</span>.<br />
 <br />
 </span><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Installation:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Just put .tscn file in your CUSTOM_DATA directory<br />
2. Open .tscn file with Notebook, change caption save directory<br />
3. To add follow in Hotscreen: Add a Filter - Mods - Box scene</span><span style="font-size: medium;" class="mycode_size"> - Edit filter - Select custom scene - AutoCapture.box.tscn<br />
</span><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i"><br />
*It just makes screenshots of captured bodyparts and saves them. I picked the best ones and made a collage</span></span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=105" target="_blank" title="">AutoCapture.box.zip</a> (Size: 3.11 KB / Downloads: 111)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Release] LoserCard™ Findom Overhaul]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=69</link>
			<pubDate>Sun, 22 Mar 2026 12:23:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=111">Xx_Noice_xX</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=69</guid>
			<description><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The Concept:</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">So I wanted to create a findom mod that was more immersive and felt more interactive. So with the help of AI I created a findom shop with a fitting banking system called <span style="font-weight: bold;" class="mycode_b">LoserCard™. </span>To create this mod and write this post I used AI. Its very findom and humiliation heavy so </span></span><span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">please always remember, that this is a fantasy! So stay safe and have fun!</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The "Beta Shop" Mechanics:</span><br />
On detection of nudity you will get a message by your mistress which brings to this mandatory shopping site. The Mistress has a quota you have to hit before the checkout even unlocks. She’ll also call out specific items she wants (shoes, bags, whatever), and if you don't add exactly what she's demanding, you’re not leaving.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=99" target="_blank" title="">Beta Store.jpg</a> (Size: 262.07 KB / Downloads: 980)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The Payment Gateway:</span><br />
I spent a lot of time on the "BetaSafe" authentication system. It’s designed to be annoying and humiliating:</span></span><ul class="mycode_list"><li><span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Oath Typing:</span> You have to type out randomized phrases like <span style="font-style: italic;" class="mycode_i">"I AM A PATHETIC LOSERCARD HOLDER"</span> to authorize the drain. If you make a single typo, the UI mocks you, wipes your progress, and makes you start over.</span></span><br />
</li>
<li><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Captchas:</span> You have to do image captchas to prove you're a "good boy" before the transaction goes through.</span></span><br />
</li>
</ul>
<br />
<span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=100" target="_blank" title="">Losercard Card Service.jpg</a> (Size: 227.79 KB / Downloads: 592)
<!-- end: postbit_attachments_attachment --></span><br />
<span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=102" target="_blank" title="">Captcha.jpg</a> (Size: 327.81 KB / Downloads: 378)
<!-- end: postbit_attachments_attachment --></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-family: Inter, sans-serif;" class="mycode_font">The Loan System &amp; "Loser-Rating":</span></span><br />
</span><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">If you run out of cash, the mod doesn't just stop. You have to open a support terminal with the LoserCard AI to beg for credit. It’ll "scan your footprint," ask you to rate how much of a loser you are, and then give you a high-interest loan based on your ego. You also have to sign a long-winded TOS that basically says your financial freedom is over.</span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=101" target="_blank" title="">Debt Support.jpg</a> (Size: 308.19 KB / Downloads: 578)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Live Chat &amp; The Leaderboard</span><br />
I didn't want the Mistress to just be a static image while you’re in the shop, so I built a window called BetaChat™. If you're stalling at the checkout or taking too long to type your apology, she actually gets bored and starts "treating herself." She’ll buy luxury items—like first-class flights or spa days—using your balance in real-time. It’s basically a penalty for being slow; the longer you wait, the more of your money she just throws away.</span><br />
<span style="color: #000000;" class="mycode_color">I also added a leaderboard where you can compare yourself to other NPC findom users</span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Technical Infos</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">You can set your own folders for Shop Items, Mistress Portraits, and Captcha images.</span></span><br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Included an emergency stop/reset for which closes all the popups </span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">For shop items to display the right price you must name the picture like this:</span></span><br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Shoes_400.jpg</span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=103" target="_blank" title="">Settings.jpg</a> (Size: 136.82 KB / Downloads: 443)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Feedback is always appreciated, let me know what you think!<br />
<br />
</span></span><br />
<hr class="mycode_hr" />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Arial;" class="mycode_font">Update:</span></span><br />
<span style="color: #000000;" class="mycode_color">For ease of use I added the photoset which I used so test it. </span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=104" target="_blank" title="">FindomSimulator.zip</a> (Size: 25.04 KB / Downloads: 501)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=108" target="_blank" title="">FindomModImages.zip</a> (Size: 8.36 MB / Downloads: 500)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The Concept:</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">So I wanted to create a findom mod that was more immersive and felt more interactive. So with the help of AI I created a findom shop with a fitting banking system called <span style="font-weight: bold;" class="mycode_b">LoserCard™. </span>To create this mod and write this post I used AI. Its very findom and humiliation heavy so </span></span><span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">please always remember, that this is a fantasy! So stay safe and have fun!</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The "Beta Shop" Mechanics:</span><br />
On detection of nudity you will get a message by your mistress which brings to this mandatory shopping site. The Mistress has a quota you have to hit before the checkout even unlocks. She’ll also call out specific items she wants (shoes, bags, whatever), and if you don't add exactly what she's demanding, you’re not leaving.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=99" target="_blank" title="">Beta Store.jpg</a> (Size: 262.07 KB / Downloads: 980)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">The Payment Gateway:</span><br />
I spent a lot of time on the "BetaSafe" authentication system. It’s designed to be annoying and humiliating:</span></span><ul class="mycode_list"><li><span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Oath Typing:</span> You have to type out randomized phrases like <span style="font-style: italic;" class="mycode_i">"I AM A PATHETIC LOSERCARD HOLDER"</span> to authorize the drain. If you make a single typo, the UI mocks you, wipes your progress, and makes you start over.</span></span><br />
</li>
<li><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Captchas:</span> You have to do image captchas to prove you're a "good boy" before the transaction goes through.</span></span><br />
</li>
</ul>
<br />
<span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=100" target="_blank" title="">Losercard Card Service.jpg</a> (Size: 227.79 KB / Downloads: 592)
<!-- end: postbit_attachments_attachment --></span><br />
<span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=102" target="_blank" title="">Captcha.jpg</a> (Size: 327.81 KB / Downloads: 378)
<!-- end: postbit_attachments_attachment --></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"><span style="font-family: Inter, sans-serif;" class="mycode_font">The Loan System &amp; "Loser-Rating":</span></span><br />
</span><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">If you run out of cash, the mod doesn't just stop. You have to open a support terminal with the LoserCard AI to beg for credit. It’ll "scan your footprint," ask you to rate how much of a loser you are, and then give you a high-interest loan based on your ego. You also have to sign a long-winded TOS that basically says your financial freedom is over.</span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=101" target="_blank" title="">Debt Support.jpg</a> (Size: 308.19 KB / Downloads: 578)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Live Chat &amp; The Leaderboard</span><br />
I didn't want the Mistress to just be a static image while you’re in the shop, so I built a window called BetaChat™. If you're stalling at the checkout or taking too long to type your apology, she actually gets bored and starts "treating herself." She’ll buy luxury items—like first-class flights or spa days—using your balance in real-time. It’s basically a penalty for being slow; the longer you wait, the more of your money she just throws away.</span><br />
<span style="color: #000000;" class="mycode_color">I also added a leaderboard where you can compare yourself to other NPC findom users</span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Technical Infos</span></span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Inter, sans-serif;" class="mycode_font">You can set your own folders for Shop Items, Mistress Portraits, and Captcha images.</span></span><br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Included an emergency stop/reset for which closes all the popups </span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">For shop items to display the right price you must name the picture like this:</span></span><br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Shoes_400.jpg</span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color"><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=103" target="_blank" title="">Settings.jpg</a> (Size: 136.82 KB / Downloads: 443)
<!-- end: postbit_attachments_attachment --></span></span><br />
<br />
<span style="font-family: Inter, sans-serif;" class="mycode_font"><span style="color: #000000;" class="mycode_color">Feedback is always appreciated, let me know what you think!<br />
<br />
</span></span><br />
<hr class="mycode_hr" />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Arial;" class="mycode_font">Update:</span></span><br />
<span style="color: #000000;" class="mycode_color">For ease of use I added the photoset which I used so test it. </span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=104" target="_blank" title="">FindomSimulator.zip</a> (Size: 25.04 KB / Downloads: 501)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=108" target="_blank" title="">FindomModImages.zip</a> (Size: 8.36 MB / Downloads: 500)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gaussian Blur Shader]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=68</link>
			<pubDate>Sat, 21 Mar 2026 16:35:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1767">lamba5da</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=68</guid>
			<description><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">I didn't like how built-in blur looked like at high values</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=97" target="_blank" title="">compar.png</a> (Size: 1.25 MB / Downloads: 605)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">So I generated a shader for another variant of adjustable Gaussian Blur</span></span><span style="font-size: large;" class="mycode_size"><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Adjustables through code:<br />
</span></span><span style="font-size: medium;" class="mycode_size">uniform float blur_radius : hint_range(0.0, 50.0) - The radius of the blur in pixels. Higher = more blur.</span><br />
<span style="font-size: medium;" class="mycode_size">uniform float blur_intensity : hint_range(0.1, 5.0) - Higher values make the blur softer/more spread out for the same radius<br />
There are little more, but I'm not sure what they do</span><span style="font-size: large;" class="mycode_size">...<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Installation:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Just put .filter file in your CUSTOM_DATA directory<br />
2. To add follow in Hotscreen: Add a Filter - Custom filters - Blur_shader</span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If you don't want to download anything, you can just copy it's code:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Follow in Hotscreen: Add a Filter - Mods - Shader effect<br />
2. Press "Expand code window" and delete all the code<br />
3. Paste this, and then press "Apply shader code":</span><br />
<span style="font-size: xx-small;" class="mycode_size">shader_type canvas_item;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Adjustable Parameters ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">// The radius of the blur in pixels. Higher = more blur but slower.</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform float blur_radius : hint_range(0.0, 50.0) = 17.0;</span><br />
<span style="font-size: xx-small;" class="mycode_size">// The intensity (sigma) of the gaussian distribution. </span><br />
<span style="font-size: xx-small;" class="mycode_size">// Higher values make the blur softer/more spread out for the same radius.</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform float blur_intensity : hint_range(0.1, 5.0) = 1.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// always put this to get if the border must be smoothed</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform int use_smooth;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// this allows to sample the current screen correctly</span><br />
<span style="font-size: xx-small;" class="mycode_size">global uniform int ScreenRotation;</span><br />
<span style="font-size: xx-small;" class="mycode_size">global uniform sampler2D CurrentScreenTexture;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 sampleCurrentScreen(vec2 uv, vec2 screen_pixel_size) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 rotated_uv = uv * (1.0-screen_pixel_size);</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (ScreenRotation == 2) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(uv.y, 1.0 - uv.x);</span><br />
<span style="font-size: xx-small;" class="mycode_size">} else if (ScreenRotation == 3) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(uv.x, uv.y);</span><br />
<span style="font-size: xx-small;" class="mycode_size">} else if (ScreenRotation == 4) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(1.0 - uv.y, uv.x);</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">return texture(CurrentScreenTexture, rotated_uv).bgra;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Helper to calculate Gaussian weight</span><br />
<span style="font-size: xx-small;" class="mycode_size">float gaussian(float x, float sigma) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">return exp(-(x * x) / (2.0 * sigma * sigma));</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">void fragment() {</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 uv = SCREEN_UV;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Normalize texel size to be consistent across resolutions (based on 1920 width reference)</span><br />
<span style="font-size: xx-small;" class="mycode_size">float coherent_texel = 1.0 / 1920.0;</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 texel = vec2(coherent_texel, coherent_texel * SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Calculate Sigma based on radius and user intensity adjustment</span><br />
<span style="font-size: xx-small;" class="mycode_size">// Standard Gaussian relation: sigma ≈ radius / 3.0 covers 99% of the curve</span><br />
<span style="font-size: xx-small;" class="mycode_size">float sigma = max(0.1, (blur_radius / 3.0) * blur_intensity);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Determine how many pixels to sample on either side of the center</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We clamp to prevent performance spikes, maxing out at roughly 32 samples per axis</span><br />
<span style="font-size: xx-small;" class="mycode_size">int range = int(ceil(sigma * 3.0)); </span><br />
<span style="font-size: xx-small;" class="mycode_size">range = clamp(range, 1, 32); </span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 accum = vec4(0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">float total_weight = 0.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Horizontal Pass ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int i = -range; i &lt;= range; i++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">float x_offset = float(i) * texel.x;</span><br />
<span style="font-size: xx-small;" class="mycode_size">float weight = gaussian(float(i), sigma);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec2 offsetUV = uv + vec2(x_offset, 0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum += sampleCurrentScreen(offsetUV, SCREEN_PIXEL_SIZE) * weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight += weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Normalize horizontal result</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum /= total_weight;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Vertical Pass ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">// To do a true 2D Gaussian separable blur, we take the result of the horizontal pass</span><br />
<span style="font-size: xx-small;" class="mycode_size">// and blur it vertically. Since we can't store intermediate textures easily in one pass,</span><br />
<span style="font-size: xx-small;" class="mycode_size">// we simulate this by accumulating the vertical samples of the *already horizontally blurred* logic?</span><br />
<span style="font-size: xx-small;" class="mycode_size">// NO: In a single pass fragment shader, we cannot actually do two distinct passes without a backbuffer.</span><br />
<span style="font-size: xx-small;" class="mycode_size">// </span><br />
<span style="font-size: xx-small;" class="mycode_size">// OPTIMIZATION FOR SINGLE PASS:</span><br />
<span style="font-size: xx-small;" class="mycode_size">// A true separable blur requires two draws. In a single custom shader slot like this,</span><br />
<span style="font-size: xx-small;" class="mycode_size">// doing a full 2D Gaussian kernel (sampling X then Y for every pixel) is O(R^2) and very slow.</span><br />
<span style="font-size: xx-small;" class="mycode_size">//</span><br />
<span style="font-size: xx-small;" class="mycode_size">// ALTERNATIVE APPROACH FOR SINGLE PASS:</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We will perform a standard 2D Gaussian Kernel sampling (Radial Gaussian).</span><br />
<span style="font-size: xx-small;" class="mycode_size">// It is less efficient than separable but looks correct and fits the single-pass constraint.</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We reset accum and sample in a grid/circle pattern.</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">accum = vec4(0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight = 0.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Sample in a square grid, discarding corners outside the radius for efficiency</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int y = -range; y &lt;= range; y++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int x = -range; x &lt;= range; x++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">float dist_sq = float(x*x + y*y);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Optimization: Skip pixels outside the effective radius circle</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (dist_sq &gt; float(range * range)) continue;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">float dist = sqrt(dist_sq);</span><br />
<span style="font-size: xx-small;" class="mycode_size">float weight = gaussian(dist, sigma);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec2 offsetUV = uv + vec2(float(x) * texel.x, float(y) * texel.y);</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum += sampleCurrentScreen(offsetUV, SCREEN_PIXEL_SIZE) * weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight += weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">accum /= total_weight;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 final_color = accum;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Always put this code to correctly manage the transparency if smooth blending enabled</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (use_smooth == 1) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">final_color.a *= texture(TEXTURE, UV).r;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">final_color.a *= COLOR.a;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">COLOR = final_color;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=98" target="_blank" title="">Blur_shader.zip</a> (Size: 5.43 KB / Downloads: 194)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">I didn't like how built-in blur looked like at high values</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=97" target="_blank" title="">compar.png</a> (Size: 1.25 MB / Downloads: 605)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">So I generated a shader for another variant of adjustable Gaussian Blur</span></span><span style="font-size: large;" class="mycode_size"><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Adjustables through code:<br />
</span></span><span style="font-size: medium;" class="mycode_size">uniform float blur_radius : hint_range(0.0, 50.0) - The radius of the blur in pixels. Higher = more blur.</span><br />
<span style="font-size: medium;" class="mycode_size">uniform float blur_intensity : hint_range(0.1, 5.0) - Higher values make the blur softer/more spread out for the same radius<br />
There are little more, but I'm not sure what they do</span><span style="font-size: large;" class="mycode_size">...<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Installation:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Just put .filter file in your CUSTOM_DATA directory<br />
2. To add follow in Hotscreen: Add a Filter - Custom filters - Blur_shader</span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If you don't want to download anything, you can just copy it's code:</span></span><br />
<span style="font-size: medium;" class="mycode_size">1. Follow in Hotscreen: Add a Filter - Mods - Shader effect<br />
2. Press "Expand code window" and delete all the code<br />
3. Paste this, and then press "Apply shader code":</span><br />
<span style="font-size: xx-small;" class="mycode_size">shader_type canvas_item;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Adjustable Parameters ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">// The radius of the blur in pixels. Higher = more blur but slower.</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform float blur_radius : hint_range(0.0, 50.0) = 17.0;</span><br />
<span style="font-size: xx-small;" class="mycode_size">// The intensity (sigma) of the gaussian distribution. </span><br />
<span style="font-size: xx-small;" class="mycode_size">// Higher values make the blur softer/more spread out for the same radius.</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform float blur_intensity : hint_range(0.1, 5.0) = 1.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// always put this to get if the border must be smoothed</span><br />
<span style="font-size: xx-small;" class="mycode_size">uniform int use_smooth;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// this allows to sample the current screen correctly</span><br />
<span style="font-size: xx-small;" class="mycode_size">global uniform int ScreenRotation;</span><br />
<span style="font-size: xx-small;" class="mycode_size">global uniform sampler2D CurrentScreenTexture;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 sampleCurrentScreen(vec2 uv, vec2 screen_pixel_size) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 rotated_uv = uv * (1.0-screen_pixel_size);</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (ScreenRotation == 2) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(uv.y, 1.0 - uv.x);</span><br />
<span style="font-size: xx-small;" class="mycode_size">} else if (ScreenRotation == 3) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(uv.x, uv.y);</span><br />
<span style="font-size: xx-small;" class="mycode_size">} else if (ScreenRotation == 4) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">rotated_uv = vec2(1.0 - uv.y, uv.x);</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">return texture(CurrentScreenTexture, rotated_uv).bgra;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Helper to calculate Gaussian weight</span><br />
<span style="font-size: xx-small;" class="mycode_size">float gaussian(float x, float sigma) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">return exp(-(x * x) / (2.0 * sigma * sigma));</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">void fragment() {</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 uv = SCREEN_UV;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Normalize texel size to be consistent across resolutions (based on 1920 width reference)</span><br />
<span style="font-size: xx-small;" class="mycode_size">float coherent_texel = 1.0 / 1920.0;</span><br />
<span style="font-size: xx-small;" class="mycode_size">vec2 texel = vec2(coherent_texel, coherent_texel * SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Calculate Sigma based on radius and user intensity adjustment</span><br />
<span style="font-size: xx-small;" class="mycode_size">// Standard Gaussian relation: sigma ≈ radius / 3.0 covers 99% of the curve</span><br />
<span style="font-size: xx-small;" class="mycode_size">float sigma = max(0.1, (blur_radius / 3.0) * blur_intensity);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Determine how many pixels to sample on either side of the center</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We clamp to prevent performance spikes, maxing out at roughly 32 samples per axis</span><br />
<span style="font-size: xx-small;" class="mycode_size">int range = int(ceil(sigma * 3.0)); </span><br />
<span style="font-size: xx-small;" class="mycode_size">range = clamp(range, 1, 32); </span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 accum = vec4(0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">float total_weight = 0.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Horizontal Pass ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int i = -range; i &lt;= range; i++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">float x_offset = float(i) * texel.x;</span><br />
<span style="font-size: xx-small;" class="mycode_size">float weight = gaussian(float(i), sigma);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec2 offsetUV = uv + vec2(x_offset, 0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum += sampleCurrentScreen(offsetUV, SCREEN_PIXEL_SIZE) * weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight += weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Normalize horizontal result</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum /= total_weight;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// --- Vertical Pass ---</span><br />
<span style="font-size: xx-small;" class="mycode_size">// To do a true 2D Gaussian separable blur, we take the result of the horizontal pass</span><br />
<span style="font-size: xx-small;" class="mycode_size">// and blur it vertically. Since we can't store intermediate textures easily in one pass,</span><br />
<span style="font-size: xx-small;" class="mycode_size">// we simulate this by accumulating the vertical samples of the *already horizontally blurred* logic?</span><br />
<span style="font-size: xx-small;" class="mycode_size">// NO: In a single pass fragment shader, we cannot actually do two distinct passes without a backbuffer.</span><br />
<span style="font-size: xx-small;" class="mycode_size">// </span><br />
<span style="font-size: xx-small;" class="mycode_size">// OPTIMIZATION FOR SINGLE PASS:</span><br />
<span style="font-size: xx-small;" class="mycode_size">// A true separable blur requires two draws. In a single custom shader slot like this,</span><br />
<span style="font-size: xx-small;" class="mycode_size">// doing a full 2D Gaussian kernel (sampling X then Y for every pixel) is O(R^2) and very slow.</span><br />
<span style="font-size: xx-small;" class="mycode_size">//</span><br />
<span style="font-size: xx-small;" class="mycode_size">// ALTERNATIVE APPROACH FOR SINGLE PASS:</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We will perform a standard 2D Gaussian Kernel sampling (Radial Gaussian).</span><br />
<span style="font-size: xx-small;" class="mycode_size">// It is less efficient than separable but looks correct and fits the single-pass constraint.</span><br />
<span style="font-size: xx-small;" class="mycode_size">// We reset accum and sample in a grid/circle pattern.</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">accum = vec4(0.0);</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight = 0.0;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Sample in a square grid, discarding corners outside the radius for efficiency</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int y = -range; y &lt;= range; y++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">for (int x = -range; x &lt;= range; x++) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">float dist_sq = float(x*x + y*y);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Optimization: Skip pixels outside the effective radius circle</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (dist_sq &gt; float(range * range)) continue;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">float dist = sqrt(dist_sq);</span><br />
<span style="font-size: xx-small;" class="mycode_size">float weight = gaussian(dist, sigma);</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec2 offsetUV = uv + vec2(float(x) * texel.x, float(y) * texel.y);</span><br />
<span style="font-size: xx-small;" class="mycode_size">accum += sampleCurrentScreen(offsetUV, SCREEN_PIXEL_SIZE) * weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">total_weight += weight;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">accum /= total_weight;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">vec4 final_color = accum;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">// Always put this code to correctly manage the transparency if smooth blending enabled</span><br />
<span style="font-size: xx-small;" class="mycode_size">if (use_smooth == 1) {</span><br />
<span style="font-size: xx-small;" class="mycode_size">final_color.a *= texture(TEXTURE, UV).r;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br />
<span style="font-size: xx-small;" class="mycode_size">final_color.a *= COLOR.a;</span><br />
<br />
<span style="font-size: xx-small;" class="mycode_size">COLOR = final_color;</span><br />
<span style="font-size: xx-small;" class="mycode_size">}</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=98" target="_blank" title="">Blur_shader.zip</a> (Size: 5.43 KB / Downloads: 194)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Beta Chastity Timer]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=67</link>
			<pubDate>Wed, 18 Mar 2026 22:11:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=111">Xx_Noice_xX</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=67</guid>
			<description><![CDATA[Hi everyone!<br />
<br />
With the help of AI i created a timer which increases the more you look at nudity. <br />
The idea would be to punish the user for looking at nudity and increasing the time spent in chastity.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=96" target="_blank" title="">Chastity Time .png</a> (Size: 991.78 KB / Downloads: 739)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=95" target="_blank" title="">Chastitytimer.zip</a> (Size: 4.27 KB / Downloads: 256)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hi everyone!<br />
<br />
With the help of AI i created a timer which increases the more you look at nudity. <br />
The idea would be to punish the user for looking at nudity and increasing the time spent in chastity.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=96" target="_blank" title="">Chastity Time .png</a> (Size: 991.78 KB / Downloads: 739)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=95" target="_blank" title="">Chastitytimer.zip</a> (Size: 4.27 KB / Downloads: 256)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[pause when in game (working)]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=64</link>
			<pubDate>Mon, 16 Mar 2026 21:35:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2208">serd</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=64</guid>
			<description><![CDATA[Even if i have a good pc running hotscreen + game (like cs2, overwatch ect...) make me lag or less fps so with this mod you can choose what .exe launch make hotscreen pause and hotscreen restart when you leave it. <br />
<br />
(claude so powerful)<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=84" target="_blank" title="">hotscreen game detector.png</a> (Size: 37.67 KB / Downloads: 291)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=85" target="_blank" title="">game_detector.mod.zip</a> (Size: 2.16 KB / Downloads: 74)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Even if i have a good pc running hotscreen + game (like cs2, overwatch ect...) make me lag or less fps so with this mod you can choose what .exe launch make hotscreen pause and hotscreen restart when you leave it. <br />
<br />
(claude so powerful)<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=84" target="_blank" title="">hotscreen game detector.png</a> (Size: 37.67 KB / Downloads: 291)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=85" target="_blank" title="">game_detector.mod.zip</a> (Size: 2.16 KB / Downloads: 74)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Intiface integration]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=63</link>
			<pubDate>Fri, 13 Mar 2026 10:05:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=667">Wombatant1</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=63</guid>
			<description><![CDATA[Hi, <br />
I Claude-ed a simple mod that allows for vibration triggering on bodypart detecion, with customizable delay and 'grace period' that is the same thing as 'stay detected during' setting in filters.<br />
<br />
Simply put - add a mod, click connect (the connection takes longer than other apps of this kind, no idea why tho) select the vibe intensity and bodyparts it has to react to and you're good<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=82" target="_blank" title="">intiface_detection_v1.1.mod.zip</a> (Size: 4.96 KB / Downloads: 28)
<!-- end: postbit_attachments_attachment --><br />
<br />
I'm working on patterns and and multi-vibrating toys, but i can't make it satisfactory.<br />
Implemented patterns menu is availbe in v1.3, but i don't like this ui, so consider this a wip:<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=83" target="_blank" title="">intiface_detection_v1.3.mod.zip</a> (Size: 8.21 KB / Downloads: 86)
<!-- end: postbit_attachments_attachment --><br />
<br />
you can select different patterns for different bodypart and then select which bodypart triggers the vibration. (there's 'escalation mode' but it's not functional as patterns kind of eliminated it's use]]></description>
			<content:encoded><![CDATA[Hi, <br />
I Claude-ed a simple mod that allows for vibration triggering on bodypart detecion, with customizable delay and 'grace period' that is the same thing as 'stay detected during' setting in filters.<br />
<br />
Simply put - add a mod, click connect (the connection takes longer than other apps of this kind, no idea why tho) select the vibe intensity and bodyparts it has to react to and you're good<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=82" target="_blank" title="">intiface_detection_v1.1.mod.zip</a> (Size: 4.96 KB / Downloads: 28)
<!-- end: postbit_attachments_attachment --><br />
<br />
I'm working on patterns and and multi-vibrating toys, but i can't make it satisfactory.<br />
Implemented patterns menu is availbe in v1.3, but i don't like this ui, so consider this a wip:<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=83" target="_blank" title="">intiface_detection_v1.3.mod.zip</a> (Size: 8.21 KB / Downloads: 86)
<!-- end: postbit_attachments_attachment --><br />
<br />
you can select different patterns for different bodypart and then select which bodypart triggers the vibration. (there's 'escalation mode' but it's not functional as patterns kind of eliminated it's use]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Discord notification + screenshot version (working)]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=62</link>
			<pubDate>Thu, 12 Mar 2026 15:07:43 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2208">serd</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=62</guid>
			<description><![CDATA[Yo so thank to claude here is the mod : <br />
<br />
You select what body part can send a msg, the cooldown between msg, and a cooldown for false detection <br />
<br />
<span style="font-weight: bold;" class="mycode_b">To use it:</span> In Discord serveur, go to your channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy URL, then paste it into the new field in the mod's UI.<br />
<br />
(not working in private message)<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=80" target="_blank" title="">discord_notification.mod.zip</a> (Size: 3.15 KB / Downloads: 66)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=81" target="_blank" title="">hotscreen mod.png</a> (Size: 69.06 KB / Downloads: 798)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Yo so thank to claude here is the mod : <br />
<br />
You select what body part can send a msg, the cooldown between msg, and a cooldown for false detection <br />
<br />
<span style="font-weight: bold;" class="mycode_b">To use it:</span> In Discord serveur, go to your channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy URL, then paste it into the new field in the mod's UI.<br />
<br />
(not working in private message)<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=80" target="_blank" title="">discord_notification.mod.zip</a> (Size: 3.15 KB / Downloads: 66)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=81" target="_blank" title="">hotscreen mod.png</a> (Size: 69.06 KB / Downloads: 798)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Prompt pop-up?]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=55</link>
			<pubDate>Fri, 06 Feb 2026 23:51:05 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1237">dick322</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=55</guid>
			<description><![CDATA[A common thing I would think is a prompt-style popup where you need to type in a phrase.<br />
Is this possible to do with a mod so a pop-up window with some text could appear over the body and you need to type in some text?]]></description>
			<content:encoded><![CDATA[A common thing I would think is a prompt-style popup where you need to type in a phrase.<br />
Is this possible to do with a mod so a pop-up window with some text could appear over the body and you need to type in some text?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Payment window] Instalation prompt]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=54</link>
			<pubDate>Thu, 22 Jan 2026 15:15:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=667">Wombatant1</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=54</guid>
			<description><![CDATA[Hi, <br />
I've made gemini create this scene that can be used in paywall filter to make a fake installation window that upgrades your tier when you proceed with installation. However I have no idea how to make it stop prompting this payment window once the 'instalation' is complete - even when money is full, nooo body part is costing to watch, the window keeps getting back - idk if there's something missing in the scene or is this how the paywall works - if yoou people have any idea please let me know!<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=74" target="_blank" title="">installer_game.paymenu.zip</a> (Size: 2.48 KB / Downloads: 153)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hi, <br />
I've made gemini create this scene that can be used in paywall filter to make a fake installation window that upgrades your tier when you proceed with installation. However I have no idea how to make it stop prompting this payment window once the 'instalation' is complete - even when money is full, nooo body part is costing to watch, the window keeps getting back - idk if there's something missing in the scene or is this how the paywall works - if yoou people have any idea please let me know!<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=74" target="_blank" title="">installer_game.paymenu.zip</a> (Size: 2.48 KB / Downloads: 153)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>