https://www.reddit.com/r/cellular_autom ... online_ca/
you can also change or write your own rules in GLSL
( a related website: https://www.shadertoy.com/results?query ... r+automata )
Interactive and GPU-accelerated online CA playground
- martin.novy
- Posts: 142
- Joined: October 22nd, 2014, 6:22 am
- Location: Czechia, EU
- Contact:
Re: Interactive and GPU-accelerated online CA playground
Slackermanz' post with video showcasing an MNCA (Multiple Neighborhood CA) is quite an eye-opener. Looks like a combination of Larger-than-Life bugs, "orbs", with a self-stabilizing background pattern that nonetheless preserves some "track" patterns where the orbs have passed.martin.novy wrote: ↑July 4th, 2020, 10:20 amhttps://www.reddit.com/r/cellular_autom ... online_ca/
you can also change or write your own rules in GLSL
( a related website: https://www.shadertoy.com/results?query ... r+automata )
Can anyone do enough detective work to retrieve the specific rule that's on display in the video?
- Slackermanz
- Posts: 17
- Joined: July 5th, 2020, 11:17 pm
Re: Interactive and GPU-accelerated online CA playground
I think that could be arranged ...Can anyone do enough detective work to retrieve the specific rule that's on display in the video?
How quickly do you want it? I'm working on a Vulkan-based render engine, and once I've got a few more features in, I should be ready to write a translation script for my old GLSL Fragment shaders to VulkanAutomata SPIR-V compatible shaders.
It'll make it much easier to find the exact rule, as well as several hundred other MNCAs.
Re: Interactive and GPU-accelerated online CA playground
Here are the results of an hour's worth of Python scripting, applied to the 450 fragment shaders (which seems like they should be called "shader fragments", but I really don't know anything about this stuff).
Here are the 450 fragments, plus a folder called "out" containing a reduced version of each. All neighborhood definitions are sorted to the top, and sums and conditionals are interleaved at the bottom.
It would usually be possible to sort the sums to the middle and the conditionals to the bottom, and in fact that's the way I did it at first. But (as Slackermanz warned me) occasionally there's a redefinition of a fin_{N} variable, usually (always?) fin_1, so in those cases the sorted logic wouldn't work the same as the unsorted version.
If some information has gotten lost somewhere along the way, which wouldn't be too surprising, then it's probably easy to edit the script and re-run the conversion. I did it as a Golly script, just because I do all Python coding as a Golly script these days, pretty much:
Code: Select all
000000.frag: nhds=6, sums=1, conds=7
000001.frag: nhds=15, sums=6, conds=11
000002.frag: nhds=1, sums=1, conds=15
000003.frag: nhds=5, sums=2, conds=9
000004.frag: nhds=5, sums=2, conds=10
000005.frag: nhds=13, sums=4, conds=8
000006.frag: nhds=6, sums=2, conds=5
000007.frag: nhds=5, sums=2, conds=6
000008.frag: nhds=3, sums=1, conds=5
000009.frag: nhds=7, sums=4, conds=6
000010.frag: nhds=6, sums=1, conds=5
000011.frag: nhds=15, sums=6, conds=11
000012.frag: nhds=11, sums=3, conds=9
000013.frag: nhds=2, sums=2, conds=8
000014.frag: nhds=1, sums=1, conds=3
000015.frag: nhds=11, sums=3, conds=6
000016.frag: nhds=13, sums=4, conds=8
000017.frag: nhds=11, sums=3, conds=8
000018.frag: nhds=13, sums=4, conds=10
000019.frag: nhds=6, sums=1, conds=8
000020.frag: nhds=1, sums=1, conds=1
000021.frag: nhds=6, sums=3, conds=9
000022.frag: nhds=3, sums=3, conds=4
000023.frag: nhds=8, sums=2, conds=10
000024.frag: nhds=11, sums=3, conds=8
000025.frag: nhds=1, sums=1, conds=3
000026.frag: nhds=11, sums=3, conds=4
000027.frag: nhds=11, sums=3, conds=7
000028.frag: nhds=13, sums=4, conds=12
000029.frag: nhds=13, sums=4, conds=10
000030.frag: nhds=3, sums=1, conds=5
000031.frag: nhds=2, sums=1, conds=3
000032.frag: nhds=8, sums=2, conds=8
000033.frag: nhds=1, sums=1, conds=5
000034.frag: nhds=1, sums=1, conds=1
000035.frag: nhds=5, sums=2, conds=9
000036.frag: nhds=4, sums=1, conds=5
000037.frag: nhds=11, sums=3, conds=5
000038.frag: nhds=13, sums=4, conds=10
000039.frag: nhds=13, sums=4, conds=4
000040.frag: nhds=5, sums=2, conds=10
000041.frag: nhds=3, sums=3, conds=4
000042.frag: nhds=13, sums=4, conds=7
000043.frag: nhds=2, sums=2, conds=4
000044.frag: nhds=1, sums=1, conds=5
000045.frag: nhds=6, sums=2, conds=6
000046.frag: nhds=4, sums=1, conds=6
000047.frag: nhds=3, sums=3, conds=6
000048.frag: nhds=8, sums=2, conds=9
000049.frag: nhds=6, sums=1, conds=5
000050.frag: nhds=1, sums=0, conds=3
000051.frag: nhds=13, sums=4, conds=7
000052.frag: nhds=1, sums=1, conds=7
000053.frag: nhds=13, sums=4, conds=10
000054.frag: nhds=5, sums=2, conds=9
000055.frag: nhds=11, sums=3, conds=6
000056.frag: nhds=3, sums=1, conds=5
000057.frag: nhds=13, sums=4, conds=10
000058.frag: nhds=4, sums=1, conds=4
000059.frag: nhds=27, sums=3, conds=8
000060.frag: nhds=2, sums=1, conds=9
000061.frag: nhds=5, sums=2, conds=4
000062.frag: nhds=7, sums=4, conds=5
000063.frag: nhds=8, sums=2, conds=8
000064.frag: nhds=11, sums=3, conds=9
000065.frag: nhds=13, sums=4, conds=9
000066.frag: nhds=2, sums=2, conds=3
000067.frag: nhds=5, sums=2, conds=8
000068.frag: nhds=1, sums=0, conds=5
000069.frag: nhds=11, sums=4, conds=5
000070.frag: nhds=7, sums=4, conds=3
000071.frag: nhds=5, sums=2, conds=8
000072.frag: nhds=5, sums=2, conds=6
000073.frag: nhds=6, sums=1, conds=6
000074.frag: nhds=5, sums=2, conds=10
000075.frag: nhds=1, sums=0, conds=3
000076.frag: nhds=1, sums=0, conds=5
000077.frag: nhds=11, sums=3, conds=10
000078.frag: nhds=13, sums=4, conds=8
000079.frag: nhds=7, sums=4, conds=4
000080.frag: nhds=7, sums=4, conds=12
000081.frag: nhds=3, sums=3, conds=11
000082.frag: nhds=6, sums=3, conds=8
000083.frag: nhds=11, sums=3, conds=3
000084.frag: nhds=5, sums=2, conds=13
000085.frag: nhds=6, sums=1, conds=4
000086.frag: nhds=1, sums=1, conds=1
000087.frag: nhds=11, sums=3, conds=6
000088.frag: nhds=1, sums=1, conds=4
000089.frag: nhds=1, sums=1, conds=2
000090.frag: nhds=5, sums=2, conds=12
000091.frag: nhds=1, sums=1, conds=4
000092.frag: nhds=8, sums=2, conds=8
000093.frag: nhds=11, sums=3, conds=7
000094.frag: nhds=2, sums=2, conds=5
000095.frag: nhds=11, sums=3, conds=7
000096.frag: nhds=8, sums=2, conds=7
000097.frag: nhds=13, sums=4, conds=6
000098.frag: nhds=1, sums=1, conds=4
000099.frag: nhds=11, sums=4, conds=5
000100.frag: nhds=7, sums=4, conds=6
000101.frag: nhds=5, sums=2, conds=8
000102.frag: nhds=7, sums=4, conds=3
000103.frag: nhds=1, sums=1, conds=5
000104.frag: nhds=4, sums=1, conds=7
000105.frag: nhds=11, sums=3, conds=5
000106.frag: nhds=5, sums=2, conds=12
000107.frag: nhds=7, sums=4, conds=12
000108.frag: nhds=3, sums=1, conds=3
000109.frag: nhds=8, sums=2, conds=8
000110.frag: nhds=1, sums=1, conds=7
000111.frag: nhds=1, sums=1, conds=3
000112.frag: nhds=5, sums=2, conds=15
000113.frag: nhds=13, sums=4, conds=7
000114.frag: nhds=11, sums=3, conds=6
000115.frag: nhds=7, sums=4, conds=3
000116.frag: nhds=13, sums=4, conds=10
000117.frag: nhds=13, sums=4, conds=9
000118.frag: nhds=1, sums=1, conds=2
000119.frag: nhds=4, sums=1, conds=4
000120.frag: nhds=3, sums=3, conds=4
000121.frag: nhds=5, sums=2, conds=12
000122.frag: nhds=13, sums=4, conds=5
000123.frag: nhds=5, sums=2, conds=11
000124.frag: nhds=13, sums=1, conds=11
000125.frag: nhds=11, sums=4, conds=6
000126.frag: nhds=1, sums=1, conds=7
000127.frag: nhds=1, sums=1, conds=2
000128.frag: nhds=7, sums=4, conds=4
000129.frag: nhds=5, sums=2, conds=10
000130.frag: nhds=2, sums=2, conds=9
000131.frag: nhds=3, sums=2, conds=11
000132.frag: nhds=8, sums=2, conds=8
000133.frag: nhds=11, sums=3, conds=8
000134.frag: nhds=5, sums=2, conds=6
000135.frag: nhds=6, sums=1, conds=3
000136.frag: nhds=11, sums=3, conds=8
000137.frag: nhds=2, sums=1, conds=3
000138.frag: nhds=2, sums=1, conds=8
000139.frag: nhds=4, sums=1, conds=4
000140.frag: nhds=13, sums=4, conds=10
000141.frag: nhds=6, sums=1, conds=5
000142.frag: nhds=3, sums=3, conds=4
000143.frag: nhds=2, sums=2, conds=4
000144.frag: nhds=5, sums=2, conds=13
000145.frag: nhds=5, sums=2, conds=9
000146.frag: nhds=5, sums=3, conds=3
000147.frag: nhds=5, sums=2, conds=5
000148.frag: nhds=3, sums=2, conds=4
000149.frag: nhds=7, sums=1, conds=3
000150.frag: nhds=8, sums=2, conds=7
000151.frag: nhds=4, sums=1, conds=8
000152.frag: nhds=5, sums=2, conds=12
000153.frag: nhds=4, sums=1, conds=4
000154.frag: nhds=11, sums=4, conds=6
000155.frag: nhds=11, sums=3, conds=4
000156.frag: nhds=1, sums=1, conds=1
000157.frag: nhds=5, sums=2, conds=4
000158.frag: nhds=5, sums=2, conds=12
000159.frag: nhds=27, sums=3, conds=9
000160.frag: nhds=5, sums=2, conds=2
000161.frag: nhds=11, sums=3, conds=6
000162.frag: nhds=4, sums=1, conds=3
000163.frag: nhds=13, sums=4, conds=9
000164.frag: nhds=5, sums=2, conds=7
000165.frag: nhds=5, sums=2, conds=6
000166.frag: nhds=5, sums=2, conds=4
000167.frag: nhds=2, sums=0, conds=5
000168.frag: nhds=15, sums=6, conds=12
000169.frag: nhds=4, sums=1, conds=4
000170.frag: nhds=7, sums=4, conds=7
000171.frag: nhds=11, sums=3, conds=5
000172.frag: nhds=5, sums=2, conds=10
000173.frag: nhds=2, sums=2, conds=2
000174.frag: nhds=5, sums=2, conds=5
000175.frag: nhds=7, sums=2, conds=7
000176.frag: nhds=4, sums=1, conds=6
000177.frag: nhds=1, sums=1, conds=1
000178.frag: nhds=2, sums=2, conds=9
000179.frag: nhds=11, sums=3, conds=8
000180.frag: nhds=13, sums=4, conds=9
000181.frag: nhds=15, sums=6, conds=12
000182.frag: nhds=4, sums=1, conds=5
000183.frag: nhds=1, sums=1, conds=3
000184.frag: nhds=5, sums=5, conds=5
000185.frag: nhds=1, sums=1, conds=2
000186.frag: nhds=8, sums=2, conds=10
000187.frag: nhds=2, sums=2, conds=8
000188.frag: nhds=1, sums=1, conds=2
000189.frag: nhds=6, sums=1, conds=5
000190.frag: nhds=13, sums=4, conds=12
000191.frag: nhds=6, sums=1, conds=6
000192.frag: nhds=6, sums=1, conds=3
000193.frag: nhds=2, sums=2, conds=9
000194.frag: nhds=11, sums=3, conds=6
000195.frag: nhds=27, sums=3, conds=7
000196.frag: nhds=5, sums=2, conds=7
000197.frag: nhds=2, sums=2, conds=9
000198.frag: nhds=2, sums=2, conds=6
000199.frag: nhds=5, sums=2, conds=7
000200.frag: nhds=5, sums=2, conds=11
000201.frag: nhds=11, sums=3, conds=6
000202.frag: nhds=13, sums=4, conds=8
000203.frag: nhds=1, sums=0, conds=3
000204.frag: nhds=8, sums=2, conds=7
000205.frag: nhds=4, sums=2, conds=7
000206.frag: nhds=11, sums=3, conds=6
000207.frag: nhds=1, sums=0, conds=6
000208.frag: nhds=11, sums=3, conds=5
000209.frag: nhds=5, sums=2, conds=11
000210.frag: nhds=2, sums=2, conds=3
000211.frag: nhds=11, sums=3, conds=8
000212.frag: nhds=5, sums=2, conds=5
000213.frag: nhds=11, sums=3, conds=8
000214.frag: nhds=8, sums=2, conds=4
000215.frag: nhds=5, sums=2, conds=8
000216.frag: nhds=6, sums=1, conds=4
000217.frag: nhds=3, sums=1, conds=6
000218.frag: nhds=2, sums=2, conds=4
000219.frag: nhds=13, sums=4, conds=11
000220.frag: nhds=10, sums=2, conds=5
000221.frag: nhds=1, sums=1, conds=1
000222.frag: nhds=5, sums=2, conds=6
000223.frag: nhds=1, sums=1, conds=2
000224.frag: nhds=4, sums=1, conds=5
000225.frag: nhds=1, sums=1, conds=5
000226.frag: nhds=11, sums=3, conds=8
000227.frag: nhds=6, sums=3, conds=6
000228.frag: nhds=6, sums=2, conds=6
000229.frag: nhds=7, sums=1, conds=4
000230.frag: nhds=7, sums=5, conds=8
000231.frag: nhds=2, sums=1, conds=3
000232.frag: nhds=5, sums=2, conds=7
000233.frag: nhds=13, sums=4, conds=11
000234.frag: nhds=11, sums=3, conds=7
000235.frag: nhds=13, sums=4, conds=6
000236.frag: nhds=5, sums=2, conds=10
000237.frag: nhds=6, sums=1, conds=5
000238.frag: nhds=15, sums=6, conds=11
000239.frag: nhds=1, sums=1, conds=2
000240.frag: nhds=13, sums=4, conds=10
000241.frag: nhds=4, sums=1, conds=4
000242.frag: nhds=2, sums=2, conds=8
000243.frag: nhds=11, sums=3, conds=7
000244.frag: nhds=7, sums=4, conds=15
000245.frag: nhds=1, sums=1, conds=2
000246.frag: nhds=5, sums=2, conds=4
000247.frag: nhds=11, sums=3, conds=7
000248.frag: nhds=8, sums=2, conds=2
000249.frag: nhds=3, sums=3, conds=10
000250.frag: nhds=4, sums=1, conds=5
000251.frag: nhds=7, sums=1, conds=4
000252.frag: nhds=1, sums=1, conds=6
000253.frag: nhds=1, sums=1, conds=3
000254.frag: nhds=5, sums=2, conds=10
000255.frag: nhds=5, sums=2, conds=13
000256.frag: nhds=2, sums=1, conds=3
000257.frag: nhds=1, sums=1, conds=7
000258.frag: nhds=4, sums=1, conds=4
000259.frag: nhds=3, sums=3, conds=8
000260.frag: nhds=5, sums=2, conds=9
000261.frag: nhds=6, sums=3, conds=9
000262.frag: nhds=11, sums=3, conds=6
000263.frag: nhds=13, sums=4, conds=9
000264.frag: nhds=6, sums=1, conds=3
000265.frag: nhds=3, sums=3, conds=8
000266.frag: nhds=3, sums=1, conds=3
000267.frag: nhds=11, sums=3, conds=8
000268.frag: nhds=6, sums=3, conds=11
000269.frag: nhds=5, sums=2, conds=5
000270.frag: nhds=1, sums=1, conds=3
000271.frag: nhds=27, sums=3, conds=10
000272.frag: nhds=6, sums=1, conds=6
000273.frag: nhds=3, sums=2, conds=9
000274.frag: nhds=11, sums=3, conds=7
000275.frag: nhds=8, sums=2, conds=6
000276.frag: nhds=3, sums=1, conds=3
000277.frag: nhds=1, sums=1, conds=2
000278.frag: nhds=5, sums=2, conds=7
000279.frag: nhds=5, sums=2, conds=5
000280.frag: nhds=5, sums=2, conds=6
000281.frag: nhds=2, sums=2, conds=3
000282.frag: nhds=5, sums=2, conds=6
000283.frag: nhds=2, sums=1, conds=3
000284.frag: nhds=1, sums=1, conds=2
000285.frag: nhds=6, sums=1, conds=4
000286.frag: nhds=4, sums=2, conds=7
000287.frag: nhds=13, sums=4, conds=5
000288.frag: nhds=5, sums=2, conds=11
000289.frag: nhds=5, sums=2, conds=13
000290.frag: nhds=4, sums=1, conds=4
000291.frag: nhds=6, sums=2, conds=9
000292.frag: nhds=13, sums=4, conds=8
000293.frag: nhds=13, sums=5, conds=9
000294.frag: nhds=7, sums=4, conds=4
000295.frag: nhds=6, sums=1, conds=5
000296.frag: nhds=8, sums=2, conds=5
000297.frag: nhds=6, sums=1, conds=4
000298.frag: nhds=3, sums=3, conds=10
000299.frag: nhds=13, sums=4, conds=8
000300.frag: nhds=7, sums=2, conds=5
000301.frag: nhds=3, sums=3, conds=6
000302.frag: nhds=1, sums=1, conds=1
000303.frag: nhds=6, sums=3, conds=7
000304.frag: nhds=11, sums=3, conds=9
000305.frag: nhds=15, sums=6, conds=11
000306.frag: nhds=8, sums=2, conds=11
000307.frag: nhds=5, sums=3, conds=6
000308.frag: nhds=4, sums=1, conds=5
000309.frag: nhds=11, sums=3, conds=6
000310.frag: nhds=15, sums=6, conds=8
000311.frag: nhds=5, sums=2, conds=5
000312.frag: nhds=2, sums=2, conds=5
000313.frag: nhds=15, sums=6, conds=11
000314.frag: nhds=11, sums=3, conds=6
000315.frag: nhds=3, sums=1, conds=6
000316.frag: nhds=6, sums=1, conds=4
000317.frag: nhds=13, sums=4, conds=9
000318.frag: nhds=13, sums=4, conds=11
000319.frag: nhds=5, sums=2, conds=5
000320.frag: nhds=4, sums=1, conds=8
000321.frag: nhds=3, sums=3, conds=10
000322.frag: nhds=6, sums=2, conds=8
000323.frag: nhds=11, sums=3, conds=8
000324.frag: nhds=5, sums=2, conds=10
000325.frag: nhds=6, sums=2, conds=5
000326.frag: nhds=6, sums=1, conds=3
000327.frag: nhds=6, sums=1, conds=8
000328.frag: nhds=3, sums=3, conds=12
000329.frag: nhds=5, sums=2, conds=7
000330.frag: nhds=1, sums=1, conds=1
000331.frag: nhds=13, sums=4, conds=6
000332.frag: nhds=7, sums=4, conds=7
000333.frag: nhds=2, sums=2, conds=9
000334.frag: nhds=4, sums=2, conds=6
000335.frag: nhds=7, sums=5, conds=9
000336.frag: nhds=13, sums=4, conds=7
000337.frag: nhds=1, sums=1, conds=4
000338.frag: nhds=5, sums=2, conds=10
000339.frag: nhds=8, sums=2, conds=5
000340.frag: nhds=6, sums=1, conds=6
000341.frag: nhds=7, sums=1, conds=3
000342.frag: nhds=13, sums=4, conds=7
000343.frag: nhds=13, sums=4, conds=11
000344.frag: nhds=4, sums=1, conds=6
000345.frag: nhds=5, sums=2, conds=9
000346.frag: nhds=15, sums=6, conds=12
000347.frag: nhds=1, sums=1, conds=4
000348.frag: nhds=4, sums=1, conds=7
000349.frag: nhds=13, sums=4, conds=10
000350.frag: nhds=5, sums=2, conds=8
000351.frag: nhds=7, sums=4, conds=6
000352.frag: nhds=5, sums=2, conds=5
000353.frag: nhds=5, sums=3, conds=3
000354.frag: nhds=8, sums=2, conds=6
000355.frag: nhds=13, sums=4, conds=12
000356.frag: nhds=1, sums=0, conds=7
000357.frag: nhds=7, sums=2, conds=4
000358.frag: nhds=8, sums=2, conds=4
000359.frag: nhds=8, sums=2, conds=7
000360.frag: nhds=6, sums=1, conds=5
000361.frag: nhds=8, sums=2, conds=11
000362.frag: nhds=13, sums=4, conds=11
000363.frag: nhds=8, sums=2, conds=6
000364.frag: nhds=6, sums=2, conds=5
000365.frag: nhds=13, sums=5, conds=9
000366.frag: nhds=5, sums=2, conds=9
000367.frag: nhds=13, sums=4, conds=9
000368.frag: nhds=27, sums=3, conds=8
000369.frag: nhds=5, sums=2, conds=10
000370.frag: nhds=6, sums=1, conds=4
000371.frag: nhds=4, sums=1, conds=6
000372.frag: nhds=8, sums=2, conds=8
000373.frag: nhds=8, sums=2, conds=7
000374.frag: nhds=4, sums=1, conds=4
000375.frag: nhds=6, sums=1, conds=6
000376.frag: nhds=13, sums=4, conds=11
000377.frag: nhds=4, sums=1, conds=6
000378.frag: nhds=7, sums=4, conds=5
000379.frag: nhds=15, sums=6, conds=12
000380.frag: nhds=4, sums=1, conds=4
000381.frag: nhds=5, sums=2, conds=10
000382.frag: nhds=5, sums=5, conds=6
000383.frag: nhds=1, sums=1, conds=3
000384.frag: nhds=13, sums=4, conds=6
000385.frag: nhds=6, sums=2, conds=4
000386.frag: nhds=3, sums=3, conds=8
000387.frag: nhds=11, sums=3, conds=5
000388.frag: nhds=1, sums=1, conds=3
000389.frag: nhds=11, sums=3, conds=11
000390.frag: nhds=13, sums=4, conds=12
000391.frag: nhds=11, sums=3, conds=9
000392.frag: nhds=8, sums=2, conds=7
000393.frag: nhds=1, sums=1, conds=3
000394.frag: nhds=8, sums=2, conds=4
000395.frag: nhds=13, sums=4, conds=9
000396.frag: nhds=6, sums=1, conds=4
000397.frag: nhds=11, sums=3, conds=10
000398.frag: nhds=5, sums=2, conds=10
000399.frag: nhds=2, sums=2, conds=9
000400.frag: nhds=7, sums=1, conds=4
000401.frag: nhds=13, sums=4, conds=11
000402.frag: nhds=2, sums=2, conds=9
000403.frag: nhds=6, sums=1, conds=6
000404.frag: nhds=7, sums=1, conds=3
000405.frag: nhds=11, sums=3, conds=6
000406.frag: nhds=11, sums=3, conds=7
000407.frag: nhds=3, sums=1, conds=6
000408.frag: nhds=7, sums=4, conds=3
000409.frag: nhds=3, sums=3, conds=5
000410.frag: nhds=5, sums=2, conds=5
000411.frag: nhds=5, sums=2, conds=6
000412.frag: nhds=13, sums=4, conds=12
000413.frag: nhds=11, sums=3, conds=10
000414.frag: nhds=15, sums=6, conds=13
000415.frag: nhds=7, sums=1, conds=4
000416.frag: nhds=6, sums=2, conds=5
000417.frag: nhds=6, sums=2, conds=6
000418.frag: nhds=5, sums=3, conds=4
000419.frag: nhds=13, sums=4, conds=9
000420.frag: nhds=11, sums=3, conds=6
000421.frag: nhds=6, sums=4, conds=8
000422.frag: nhds=4, sums=2, conds=5
000423.frag: nhds=13, sums=4, conds=7
000424.frag: nhds=1, sums=1, conds=2
000425.frag: nhds=3, sums=3, conds=8
000426.frag: nhds=5, sums=2, conds=12
000427.frag: nhds=13, sums=4, conds=10
000428.frag: nhds=6, sums=2, conds=4
000429.frag: nhds=1, sums=1, conds=2
000430.frag: nhds=3, sums=3, conds=10
000431.frag: nhds=11, sums=3, conds=8
000432.frag: nhds=13, sums=4, conds=9
000433.frag: nhds=1, sums=1, conds=1
000434.frag: nhds=13, sums=4, conds=11
000435.frag: nhds=4, sums=1, conds=9
000436.frag: nhds=6, sums=1, conds=6
000437.frag: nhds=6, sums=2, conds=9
000438.frag: nhds=3, sums=3, conds=14
000439.frag: nhds=4, sums=1, conds=6
000440.frag: nhds=5, sums=2, conds=10
000441.frag: nhds=2, sums=2, conds=9
000442.frag: nhds=11, sums=3, conds=7
000443.frag: nhds=6, sums=3, conds=7
000444.frag: nhds=3, sums=3, conds=10
000445.frag: nhds=8, sums=2, conds=7
000446.frag: nhds=1, sums=1, conds=7
000447.frag: nhds=13, sums=4, conds=9
000448.frag: nhds=11, sums=4, conds=7
000449.frag: nhds=13, sums=4, conds=3
It would usually be possible to sort the sums to the middle and the conditionals to the bottom, and in fact that's the way I did it at first. But (as Slackermanz warned me) occasionally there's a redefinition of a fin_{N} variable, usually (always?) fin_1, so in those cases the sorted logic wouldn't work the same as the unsorted version.
If some information has gotten lost somewhere along the way, which wouldn't be too surprising, then it's probably easy to edit the script and re-run the conversion. I did it as a Golly script, just because I do all Python coding as a Golly script these days, pretty much:
Code: Select all
import golly as g
import os
# will need a folder named "out" inside the folder specified by the path below
path = "YOUR/PATH/HERE/FormattedGLSL-Final/"
files = os.listdir(path)
s = ""
count = 0
condinprogress = False
for fname in files:
if fname != "out":
with open(path + fname, "r") as f:
all = f.readlines()
nhds = ""
sums = ""
conds = ""
code = ""
for line in all:
trimmed = line.strip()
if trimmed.startswith("float nhd"):
nhd = trimmed[6:].replace("cv(","").replace(".0,",",").replace(".0)","").replace("+",";")
if nhd.endswith(";"): nhd = nhd[:-1]
nhds = nhds + nhd + "\n"
elif trimmed.startswith("float fin"):
fin = trimmed[6:].replace(";","")
sums += fin + "\n"
code += fin + "\n"
elif trimmed.startswith("if(fin") or trimmed.startswith("if (fin"):
cond = trimmed.replace(".0","")
if not cond.endswith("}"):
condinprogress = True
elif condinprogress == True:
cond += trimmed.replace(".0","")
if cond.endswith("}"):
condinprogress = False
conditional = cond.replace("if(fin","if (fin").replace("&&", " and ").replace("{",": ").replace("outval","out").replace(";}","") + "\n"
conds += conditional
code += conditional
with open (path + "out/reduced-" + fname,"w") as f:
f.write(nhds + code)
s += fname + ": nhds=" + str(nhds.count("\n"))+", sums=" + str(sums.count("\n"))+", conds="+str(conds.count("\n"))+"\n"
g.show(str(count))
count +=1
g.setclipstr(s)