<?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 - All Forums]]></title>
		<link>https://hotscreen.dominated.dev/</link>
		<description><![CDATA[Unofficial Hotscreen Community - https://hotscreen.dominated.dev]]></description>
		<pubDate>Mon, 25 May 2026 17:47:46 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Discord - Streaming Censored Via Hotscreen]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=84</link>
			<pubDate>Mon, 18 May 2026 19:15:57 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2683">MoonlightG</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=84</guid>
			<description><![CDATA[Hey!<br />
<br />
Please let me know if there is a solution to this, but whenever I try to stream my censored content on discord/OBS, it'll only show the original image to the recipient.<br />
<br />
I know there is a create "record able window" option, which does let me stream, however it prevents me from doing anything beneath this layer, as it sits atop everything else.<br />
<br />
Any thoughts?]]></description>
			<content:encoded><![CDATA[Hey!<br />
<br />
Please let me know if there is a solution to this, but whenever I try to stream my censored content on discord/OBS, it'll only show the original image to the recipient.<br />
<br />
I know there is a create "record able window" option, which does let me stream, however it prevents me from doing anything beneath this layer, as it sits atop everything else.<br />
<br />
Any thoughts?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[how would i make a "random filter"mod or collecition]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=83</link>
			<pubDate>Mon, 18 May 2026 12:16:41 +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=83</guid>
			<description><![CDATA[i wanna have a collection/mod that will randomly change though filters but no clue how do it. tried asked claude to no help/ anything similar to the slot machine sollection would be a great help!]]></description>
			<content:encoded><![CDATA[i wanna have a collection/mod that will randomly change though filters but no clue how do it. tried asked claude to no help/ anything similar to the slot machine sollection would be a great help!]]></content:encoded>
		</item>
		<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: 46)
<!-- 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: 143)
<!-- 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: 120)
<!-- 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: 123)
<!-- 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: 46)
<!-- 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: 143)
<!-- 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: 120)
<!-- 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: 123)
<!-- 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: 63)
<!-- 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: 55)
<!-- 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: 63)
<!-- 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: 55)
<!-- 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: 34)
<!-- 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: 146)
<!-- 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: 37)
<!-- 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: 33)
<!-- 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: 19)
<!-- 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: 34)
<!-- 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: 146)
<!-- 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: 37)
<!-- 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: 33)
<!-- 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: 19)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Full body censors not working]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=78</link>
			<pubDate>Tue, 05 May 2026 17:31:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2235">Cresti</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=78</guid>
			<description><![CDATA[Stuff like full body line censors detect the bodies and cut them out, i can see that since they have a delay, but theres no censor thats applying on top of it. Basically i can see the uncensored bodies, just with a delay which is super weird bc they should be blacked out. Other censor like the boxes for example seem to work tho so its kinda weird. Please help me out!!<br />
<img src="https://hotscreen.dominated.dev/images/smilies/heart.png" alt="Heart" title="Heart" class="smilie smilie_16" />]]></description>
			<content:encoded><![CDATA[Stuff like full body line censors detect the bodies and cut them out, i can see that since they have a delay, but theres no censor thats applying on top of it. Basically i can see the uncensored bodies, just with a delay which is super weird bc they should be blacked out. Other censor like the boxes for example seem to work tho so its kinda weird. Please help me out!!<br />
<img src="https://hotscreen.dominated.dev/images/smilies/heart.png" alt="Heart" title="Heart" class="smilie smilie_16" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[beta chips]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=77</link>
			<pubDate>Tue, 28 Apr 2026 18:44:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=352">siamirold</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=77</guid>
			<description><![CDATA[--Welcome to the Beta World!<br />
<br />
  I've just implanted a Beta chip into your brain. This is a system designed to train you become a foot and armpit slave.  From now on, you can only see women with mosaics/censorship bars. <br />
  Additionally, if you keep staring at exposed breasts or something you don't deserve, the Beta level will increase, and you will get harsher punishment. <br />
<br />
  Reward method: When your vision contains only feet or armpits, the Beta level will slowly decrease. <br />
  Warning: Once the Beta chip reaches maximum level, everything will become irreversible!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/tar.png" title="Collection File" border="0" alt=".collection" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=139" target="_blank" title="">Beta System.collection</a> (Size: 41.34 KB / Downloads: 521)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[--Welcome to the Beta World!<br />
<br />
  I've just implanted a Beta chip into your brain. This is a system designed to train you become a foot and armpit slave.  From now on, you can only see women with mosaics/censorship bars. <br />
  Additionally, if you keep staring at exposed breasts or something you don't deserve, the Beta level will increase, and you will get harsher punishment. <br />
<br />
  Reward method: When your vision contains only feet or armpits, the Beta level will slowly decrease. <br />
  Warning: Once the Beta chip reaches maximum level, everything will become irreversible!<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://hotscreen.dominated.dev/images/attachtypes/tar.png" title="Collection File" border="0" alt=".collection" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=139" target="_blank" title="">Beta System.collection</a> (Size: 41.34 KB / Downloads: 521)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to prevent Hotscreen from being closed]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=76</link>
			<pubDate>Fri, 24 Apr 2026 18:44:51 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=1961">welpwarrior</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=76</guid>
			<description><![CDATA[Hi Everyone,<br />
<br />
On the itch forums, someone recently posed a question about ways to prevent HS from being closed. Since the default built-in lock doesn't prevent a user from simply killing the process in Task Manager, I decided to look deeper into the subject after seeing some initial community suggestions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The Problem &amp; The Approach</span><br />
Since the application doesn't have native anti-tamper mechanisms, the only real way to handle this is to make closing it as hard and annoying as possible—especially considering most users have administrator access on their PCs.<br />
<br />
What I've developed is a result of this restriction. It consists of two .exe files: "alpha" and "beta".<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How to Use</span><br />
First launch: Run alpha.exe<br />
If after restart it doesn't work: check antivirus for removed threats, allow it again, then run alpha.exe again<br />
<br />
Source Code: I am providing the Python source code below because Windows (and most antivirus software) will likely treat these files as a Trojan/Virus.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why is it flagged as a Virus?</span><br />
It’s quite simple: to make closing HS difficult, I’ve placed the process in non-obvious locations and introduced watchdog mechanisms. These scripts watch for changes and relaunch the app if it’s terminated. This exact behavior—monitoring processes and self-replicating/restarting—is very similar to how actual malware behaves.<br />
<br />
Note on Antivirus: If you want to run these, you will need to add exclusions every time your antivirus neutralizes the threat. If the app doesn't launch properly after a PC restart, check your "Neutralized Threats," allow the files, and relaunch alpha.exe.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Technical Details</span><br />
If you don't want to spoil how the "magic" works under the hood, don't look at the code. For those who are curious or concerned about security, feel free to analyze the source or run it through an AI for a breakdown. The code was compiled into .exe using python -m nuitka --onefile --windows-console-mode=disable ...<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Additional info</span><br />
I have no idea at the moment, how to launch HS with custom parameters, that would allow for automatic locking or configuring fps, screen, etc, so if someone knows I would appreciate information<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=138" target="_blank" title="">Hotscreen.zip</a> (Size: 16.21 MB / Downloads: 103)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hi Everyone,<br />
<br />
On the itch forums, someone recently posed a question about ways to prevent HS from being closed. Since the default built-in lock doesn't prevent a user from simply killing the process in Task Manager, I decided to look deeper into the subject after seeing some initial community suggestions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The Problem &amp; The Approach</span><br />
Since the application doesn't have native anti-tamper mechanisms, the only real way to handle this is to make closing it as hard and annoying as possible—especially considering most users have administrator access on their PCs.<br />
<br />
What I've developed is a result of this restriction. It consists of two .exe files: "alpha" and "beta".<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How to Use</span><br />
First launch: Run alpha.exe<br />
If after restart it doesn't work: check antivirus for removed threats, allow it again, then run alpha.exe again<br />
<br />
Source Code: I am providing the Python source code below because Windows (and most antivirus software) will likely treat these files as a Trojan/Virus.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why is it flagged as a Virus?</span><br />
It’s quite simple: to make closing HS difficult, I’ve placed the process in non-obvious locations and introduced watchdog mechanisms. These scripts watch for changes and relaunch the app if it’s terminated. This exact behavior—monitoring processes and self-replicating/restarting—is very similar to how actual malware behaves.<br />
<br />
Note on Antivirus: If you want to run these, you will need to add exclusions every time your antivirus neutralizes the threat. If the app doesn't launch properly after a PC restart, check your "Neutralized Threats," allow the files, and relaunch alpha.exe.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Technical Details</span><br />
If you don't want to spoil how the "magic" works under the hood, don't look at the code. For those who are curious or concerned about security, feel free to analyze the source or run it through an AI for a breakdown. The code was compiled into .exe using python -m nuitka --onefile --windows-console-mode=disable ...<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Additional info</span><br />
I have no idea at the moment, how to launch HS with custom parameters, that would allow for automatic locking or configuring fps, screen, etc, so if someone knows I would appreciate information<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=138" target="_blank" title="">Hotscreen.zip</a> (Size: 16.21 MB / Downloads: 103)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Issue with Censor filter]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=75</link>
			<pubDate>Sat, 11 Apr 2026 15:07:53 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2556">cagefan112</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=75</guid>
			<description><![CDATA[Hi,<br />
<br />
Body parts I do not want censored (armpits, belly, etc.) have large black boxes over them, even though I have not selected them to be triggered by the filter. <br />
<br />
Does anyone know how to have them look normal and not have a large black box over them?]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
Body parts I do not want censored (armpits, belly, etc.) have large black boxes over them, even though I have not selected them to be triggered by the filter. <br />
<br />
Does anyone know how to have them look normal and not have a large black box over them?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Full body line censoring shader]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=74</link>
			<pubDate>Fri, 03 Apr 2026 15:11:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=2460">OLK0001</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=74</guid>
			<description><![CDATA[<span style="font-size: 5pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Filter Guide</span></span><br />
<br />
This post includes three main body-line clipping filters: <span style="font-weight: bold;" class="mycode_b">V2.1</span>, <span style="font-weight: bold;" class="mycode_b">V3</span>, and <span style="font-weight: bold;" class="mycode_b">V3.1</span>.<br />
<br />
They are listed in order:<br />
<span style="font-weight: bold;" class="mycode_b">V2.1 → V3 → V3.1</span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What these filters actually are</span></span><br />
<br />
All three filters are built around Godot shader logic, color-space matching, nearby-pixel checks, and short-range region filling.<br />
<br />
They are <span style="font-weight: bold;" class="mycode_b">NOT true body-part recognition models</span>.<br />
<br />
That means if some small or awkward exposed body parts are still missed, it is mostly because this setup is already reaching the practical limit of <span style="font-weight: bold;" class="mycode_b">Godot-side heuristic detection</span> and the recognition method used here — <span style="font-weight: bold;" class="mycode_b">not</span> because of one tiny coding mistake or one small threshold being wrong.<br />
<br />
So if a version still misses a small exposed detail, especially under:<ul class="mycode_list"><li>heavy stylization<br />
</li>
<li>dark shading<br />
</li>
<li>compression<br />
</li>
<li>unusual colors<br />
</li>
<li>difficult poses<br />
</li>
<li>black clothing near skin<br />
</li>
<li>pink or red backgrounds<br />
</li>
</ul>
<br />
that is mainly an <span style="font-weight: bold;" class="mycode_b">engine / recognition limitation</span>, not just a bug.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V2.1</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> strong and simple overall censor coverage<br />
<br />
V2.1 is the most direct and aggressive version of the three.<br />
It focuses on broad body-line clipping and usually gives the strongest first-pass coverage.<br />
<br />
This is the best choice if the goal is to catch as much as possible quickly.<br />
The tradeoff is that it can be rougher and less precise in difficult scenes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>broad censor coverage matters more than precision<br />
</li>
<li>a simpler version is preferred as a starting point<br />
</li>
<li>the content does not have too many difficult shadows or confusing background colors<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V3</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> better handling of shadowed skin and more stable body continuity<br />
<br />
V3 improves on V2.1 by adding better support for darker or shadowed body regions and more controlled local expansion.<br />
<br />
In practice, it usually holds body areas together better when lighting gets weird or when skin tones shift into darker purple or low-light colors.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>V2.1 misses shadowed or darker body regions<br />
</li>
<li>a better balance between coverage and control is needed<br />
</li>
<li>the scene has more difficult lighting or color variation<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V3.1</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> the most refined balance between coverage and precision<br />
<br />
V3.1 is the most advanced and most refined version of the three.<br />
It is designed to be more careful about when and where it expands the censor region.<br />
<br />
In practice, this is usually the best balance between:<ul class="mycode_list"><li>catching important exposed areas<br />
</li>
<li>avoiding unnecessary spreading into unrelated shapes<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>the most polished version is wanted<br />
</li>
<li>the best balance between precision and body-part coverage is needed<br />
</li>
<li>harder scenes are being tested and less unnecessary spreading is preferred<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Which one should be used?</span></span><br />
<br />
Simple rule:<ul class="mycode_list"><li>Start with <span style="font-weight: bold;" class="mycode_b">V2.1</span> if the goal is the strongest and simplest broad coverage<br />
</li>
<li>Move to <span style="font-weight: bold;" class="mycode_b">V3</span> if V2.1 misses body areas under dark or difficult lighting<br />
</li>
<li>Use <span style="font-weight: bold;" class="mycode_b">V3.1</span> if the goal is the most refined overall balance<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Important limitation</span></span><br />
<br />
These filters do <span style="font-weight: bold;" class="mycode_b">NOT</span> actually understand anatomy the way a trained segmentation or body-part detection model would.<br />
<br />
They work by estimating likely regions from:<ul class="mycode_list"><li>color<br />
</li>
<li>shading<br />
</li>
<li>nearby pixels<br />
</li>
<li>local support and short-range connection logic<br />
</li>
</ul>
<br />
So edge cases will always exist.<br />
<br />
Small missing body-part censoring can still happen, especially with:<ul class="mycode_list"><li>stylized anime art<br />
</li>
<li>strong shading<br />
</li>
<li>compression<br />
</li>
<li>unusual color grading<br />
</li>
<li>black clothing near skin<br />
</li>
<li>pink/red backgrounds<br />
</li>
<li>tiny exposed details<br />
</li>
</ul>
<br />
At this point, further improvement would likely require moving beyond pure Godot shader heuristics into a more advanced recognition or segmentation pipeline.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Quick usage note</span></span><br />
<br />
The screenshot above shows a short guide for how to stack and use the filters.<br />
<br />
The three body-line clipping filters included here are:<br />
<ol type="1" class="mycode_list"><li>Custom Body Line Clipping V2.1<br />
</li>
<li>Custom Body Line Clipping V3<br />
</li>
<li>Custom Body Line Clipping V3.1<br />
</li>
</ol>
<br />
Choose the one that fits the scene best, then combine it with <span style="font-weight: bold;" class="mycode_b">Censor/Repeated Text</span> as needed.<br />
<span style="font-size: medium;" class="mycode_size">Some cheap talks<br />
This is inspired from <a href="https://hotscreen.dominated.dev/member.php?action=profile&amp;uid=1171" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3c699c;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: 'Open Sans', Arial, Tahoma, sans-serif;" class="mycode_font">endofbeen</span></span></span></a>, I'm studying embedded system and actually have some free time so I decided to make it in 2 hours.<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=128" target="_blank" title="">Screenshot 2026-04-03 225205.png</a> (Size: 84.93 KB / Downloads: 538)
<!-- end: postbit_attachments_attachment --><!-- 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=122" target="_blank" title="">screenshot_589736372.png</a> (Size: 4.53 MB / Downloads: 580)
<!-- end: postbit_attachments_attachment --><!-- 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=123" target="_blank" title="">screenshot_890894794.png</a> (Size: 2.73 MB / Downloads: 321)
<!-- end: postbit_attachments_attachment --><!-- 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=124" target="_blank" title="">screenshot_900244568.png</a> (Size: 3.92 MB / Downloads: 314)
<!-- end: postbit_attachments_attachment --><!-- 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=126" target="_blank" title="">screenshot_3376821132.png</a> (Size: 5.24 MB / Downloads: 397)
<!-- end: postbit_attachments_attachment --><!-- 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=127" target="_blank" title="">clipping.zip</a> (Size: 44.35 KB / Downloads: 570)
<!-- end: postbit_attachments_attachment --></span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: 5pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Filter Guide</span></span><br />
<br />
This post includes three main body-line clipping filters: <span style="font-weight: bold;" class="mycode_b">V2.1</span>, <span style="font-weight: bold;" class="mycode_b">V3</span>, and <span style="font-weight: bold;" class="mycode_b">V3.1</span>.<br />
<br />
They are listed in order:<br />
<span style="font-weight: bold;" class="mycode_b">V2.1 → V3 → V3.1</span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What these filters actually are</span></span><br />
<br />
All three filters are built around Godot shader logic, color-space matching, nearby-pixel checks, and short-range region filling.<br />
<br />
They are <span style="font-weight: bold;" class="mycode_b">NOT true body-part recognition models</span>.<br />
<br />
That means if some small or awkward exposed body parts are still missed, it is mostly because this setup is already reaching the practical limit of <span style="font-weight: bold;" class="mycode_b">Godot-side heuristic detection</span> and the recognition method used here — <span style="font-weight: bold;" class="mycode_b">not</span> because of one tiny coding mistake or one small threshold being wrong.<br />
<br />
So if a version still misses a small exposed detail, especially under:<ul class="mycode_list"><li>heavy stylization<br />
</li>
<li>dark shading<br />
</li>
<li>compression<br />
</li>
<li>unusual colors<br />
</li>
<li>difficult poses<br />
</li>
<li>black clothing near skin<br />
</li>
<li>pink or red backgrounds<br />
</li>
</ul>
<br />
that is mainly an <span style="font-weight: bold;" class="mycode_b">engine / recognition limitation</span>, not just a bug.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V2.1</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> strong and simple overall censor coverage<br />
<br />
V2.1 is the most direct and aggressive version of the three.<br />
It focuses on broad body-line clipping and usually gives the strongest first-pass coverage.<br />
<br />
This is the best choice if the goal is to catch as much as possible quickly.<br />
The tradeoff is that it can be rougher and less precise in difficult scenes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>broad censor coverage matters more than precision<br />
</li>
<li>a simpler version is preferred as a starting point<br />
</li>
<li>the content does not have too many difficult shadows or confusing background colors<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V3</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> better handling of shadowed skin and more stable body continuity<br />
<br />
V3 improves on V2.1 by adding better support for darker or shadowed body regions and more controlled local expansion.<br />
<br />
In practice, it usually holds body areas together better when lighting gets weird or when skin tones shift into darker purple or low-light colors.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>V2.1 misses shadowed or darker body regions<br />
</li>
<li>a better balance between coverage and control is needed<br />
</li>
<li>the scene has more difficult lighting or color variation<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Body Line Clipping V3.1</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Best for:</span> the most refined balance between coverage and precision<br />
<br />
V3.1 is the most advanced and most refined version of the three.<br />
It is designed to be more careful about when and where it expands the censor region.<br />
<br />
In practice, this is usually the best balance between:<ul class="mycode_list"><li>catching important exposed areas<br />
</li>
<li>avoiding unnecessary spreading into unrelated shapes<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Use this if:</span><ul class="mycode_list"><li>the most polished version is wanted<br />
</li>
<li>the best balance between precision and body-part coverage is needed<br />
</li>
<li>harder scenes are being tested and less unnecessary spreading is preferred<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Which one should be used?</span></span><br />
<br />
Simple rule:<ul class="mycode_list"><li>Start with <span style="font-weight: bold;" class="mycode_b">V2.1</span> if the goal is the strongest and simplest broad coverage<br />
</li>
<li>Move to <span style="font-weight: bold;" class="mycode_b">V3</span> if V2.1 misses body areas under dark or difficult lighting<br />
</li>
<li>Use <span style="font-weight: bold;" class="mycode_b">V3.1</span> if the goal is the most refined overall balance<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Important limitation</span></span><br />
<br />
These filters do <span style="font-weight: bold;" class="mycode_b">NOT</span> actually understand anatomy the way a trained segmentation or body-part detection model would.<br />
<br />
They work by estimating likely regions from:<ul class="mycode_list"><li>color<br />
</li>
<li>shading<br />
</li>
<li>nearby pixels<br />
</li>
<li>local support and short-range connection logic<br />
</li>
</ul>
<br />
So edge cases will always exist.<br />
<br />
Small missing body-part censoring can still happen, especially with:<ul class="mycode_list"><li>stylized anime art<br />
</li>
<li>strong shading<br />
</li>
<li>compression<br />
</li>
<li>unusual color grading<br />
</li>
<li>black clothing near skin<br />
</li>
<li>pink/red backgrounds<br />
</li>
<li>tiny exposed details<br />
</li>
</ul>
<br />
At this point, further improvement would likely require moving beyond pure Godot shader heuristics into a more advanced recognition or segmentation pipeline.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Quick usage note</span></span><br />
<br />
The screenshot above shows a short guide for how to stack and use the filters.<br />
<br />
The three body-line clipping filters included here are:<br />
<ol type="1" class="mycode_list"><li>Custom Body Line Clipping V2.1<br />
</li>
<li>Custom Body Line Clipping V3<br />
</li>
<li>Custom Body Line Clipping V3.1<br />
</li>
</ol>
<br />
Choose the one that fits the scene best, then combine it with <span style="font-weight: bold;" class="mycode_b">Censor/Repeated Text</span> as needed.<br />
<span style="font-size: medium;" class="mycode_size">Some cheap talks<br />
This is inspired from <a href="https://hotscreen.dominated.dev/member.php?action=profile&amp;uid=1171" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3c699c;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: 'Open Sans', Arial, Tahoma, sans-serif;" class="mycode_font">endofbeen</span></span></span></a>, I'm studying embedded system and actually have some free time so I decided to make it in 2 hours.<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=128" target="_blank" title="">Screenshot 2026-04-03 225205.png</a> (Size: 84.93 KB / Downloads: 538)
<!-- end: postbit_attachments_attachment --><!-- 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=122" target="_blank" title="">screenshot_589736372.png</a> (Size: 4.53 MB / Downloads: 580)
<!-- end: postbit_attachments_attachment --><!-- 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=123" target="_blank" title="">screenshot_890894794.png</a> (Size: 2.73 MB / Downloads: 321)
<!-- end: postbit_attachments_attachment --><!-- 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=124" target="_blank" title="">screenshot_900244568.png</a> (Size: 3.92 MB / Downloads: 314)
<!-- end: postbit_attachments_attachment --><!-- 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=126" target="_blank" title="">screenshot_3376821132.png</a> (Size: 5.24 MB / Downloads: 397)
<!-- end: postbit_attachments_attachment --><!-- 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=127" target="_blank" title="">clipping.zip</a> (Size: 44.35 KB / Downloads: 570)
<!-- end: postbit_attachments_attachment --></span>]]></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: 663)
<!-- 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: 507)
<!-- 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: 663)
<!-- 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: 507)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gaussian blur]]></title>
			<link>https://hotscreen.dominated.dev/showthread.php?tid=71</link>
			<pubDate>Tue, 24 Mar 2026 06:27:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://hotscreen.dominated.dev/member.php?action=profile&uid=352">siamirold</a>]]></dc:creator>
			<guid isPermaLink="false">https://hotscreen.dominated.dev/showthread.php?tid=71</guid>
			<description><![CDATA[This is a Gaussian blur shader and a collection made by it, the Gaussian blur is smoother than the native blur filter.<br />
<br />
This is a very performance consuming shader. Please lower the value If lagging<br />
<br />
Using the shader, I created an awesome collection.<br />
<br />
It achieves a myopia like effect. It looks like you have watched too many porn and make yourself can't see anything clearly anymore. XD<br />
<br />
Please note that collection is a full screen effect.<br />
Besides, I uncensored the feet and the armpits to demonstrate my mercy <img src="https://hotscreen.dominated.dev/images/smilies/tongue.png" alt="Tongue" title="Tongue" class="smilie smilie_5" /> <br />
<br />
Any advice, pls come to Discord and DM Eilysia<br />
<br />
Keeping censored and have fun !<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=111" target="_blank" title="">screenshot_3375431167.png</a> (Size: 1.94 MB / Downloads: 605)
<!-- end: postbit_attachments_attachment --><!-- 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=112" target="_blank" title="">SPOILER_screenshot_1536849552.png</a> (Size: 1.24 MB / Downloads: 536)
<!-- 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=110" target="_blank" title="">Gaussian Blur.zip</a> (Size: 10.31 KB / Downloads: 293)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[This is a Gaussian blur shader and a collection made by it, the Gaussian blur is smoother than the native blur filter.<br />
<br />
This is a very performance consuming shader. Please lower the value If lagging<br />
<br />
Using the shader, I created an awesome collection.<br />
<br />
It achieves a myopia like effect. It looks like you have watched too many porn and make yourself can't see anything clearly anymore. XD<br />
<br />
Please note that collection is a full screen effect.<br />
Besides, I uncensored the feet and the armpits to demonstrate my mercy <img src="https://hotscreen.dominated.dev/images/smilies/tongue.png" alt="Tongue" title="Tongue" class="smilie smilie_5" /> <br />
<br />
Any advice, pls come to Discord and DM Eilysia<br />
<br />
Keeping censored and have fun !<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=111" target="_blank" title="">screenshot_3375431167.png</a> (Size: 1.94 MB / Downloads: 605)
<!-- end: postbit_attachments_attachment --><!-- 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=112" target="_blank" title="">SPOILER_screenshot_1536849552.png</a> (Size: 1.24 MB / Downloads: 536)
<!-- 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=110" target="_blank" title="">Gaussian Blur.zip</a> (Size: 10.31 KB / Downloads: 293)
<!-- 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: 579)
<!-- 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: 164)
<!-- 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: 112)
<!-- 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: 579)
<!-- 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: 164)
<!-- 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: 112)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>