From The Powder Toy
Revision as of 00:42, 3 January 2021 by TiredTech (talk | contribs) (I've replaced the ARAY Conduit explanation for something more informative. I've added several sections about the uses of FILT, and I've added a couple links to very useful FILT tutorials. I may have made a mistake here or there. I'll do ARAY next.)
Jump to: navigation, search
FILT.png Filter
Section Solids
Spawn temperature 22°C
Heat Conductivity 100%
Relative weight 100
Gravity 0
Acid dissolve rate 0.1%
Flammability 0
State Solid
Misc properties
Source code


When created, Filter's color is based on its temperature. It will scale from dark blue to dark red, corresponding roughly to temperatures between 200 and 840°C. Filter has high temperature conductivity, and its color-changing makes it easy to see the flow of heat.

Filter will color BIZR and white BRAY passing through it. FILT can also change the color of passing PHOT and BRAY using binary logic, described in detail later. FILT is one of those seemingly boring, but in reality extremely complex and interesting elements. Here are some uses of FILT:

Heat Conductor

Probably the simplest way to use FILT, for a beginner at least, is to transfer heat. FILT has a very high (but not the highest) thermal conductivity and is nearly indestructible, making it ideal for transferring heat away from reactors to cooling fluids. It is also useful for debugging, as it changes color from blue at 0°C to red at 1000°C. (more detail on this in later sections). Note that if ambient heat is enabled, FILT's temperature will not be affected by the 'air temperature' around it, only items touching it.

ARAY Conduit

Moving signals with ARAY is very fast, but unlike INST, it isn't instant. While ARAY isn't exactly the fastest, it can be half the size of a bunch of INST propagating the same amount of data.

There are three kinds of BRAY that can be created by an ARAY sparking a specific conductor while next to it. The first kind is the simplest, when an ARAY is Sparked by any conductor other than PSCN and INST it will shoot a BRAY beam. This BRAY beam has 30 life on creation, so unless you want to wait 30 frames to fire it again, you should find some way to get ride of the BRAY. FILT, ARAY, INVS, INWR and STOR allow BRAY through them. If you cover the journey from start to end with one or more of these elements then it will travel any distance but will be unable to create a BRAY because there are no empty spaces, therefore eliminating the need for something to get ride of the BRAY.

For more general info on ARAY you can visit the ARAY page.

The most relevant use of ARAY is in its reaction to passing through FILT. When you fire an ARAY it will move through each space until it hits a barrier, note that BRAY itself is considered a barrier so you need to clear BRAY away or prevent it from being created if you want to avoid hitting it. FILT is not a barrier so BRAY will travel through it. While BRAY is within the FILT, the FILT will effect the BRAY's wavelength based on the FILT's mode and FILT's own wavelength. By default, a BRAY is created with a wavelength who's bits are all set which is what gives it its white color. FILT will do an operation based on it's mode where A is the incoming BRAY's wavelength and B is the FILT's wavelength. The FILT will take each bit and operate on it using A and B as it's two inputs. Q will be it's output.

While using ARAY you may be troubled with a situation where you can't put down something like FILT to fill in the empty space, but you still want to remove the BRAY before the next SPRK cycle. In this instance you can do a few different things. There are many ways to remove elements but only one includes ARAY. When you SPRK an ARAY with PSCN it will create a special kind of bray. This bray only has a life of 2, isn't affected by FILT, and can pass through and delete the white type of BRAY.

Filter for Photons and BRAY


BIZR/G/S, BRAY, FILT, and PHOT particles store their wavelengths in the ctype field. Wavelengths are just 30 bit numbers that are stored in the ctype of a particle.

You can learn more about wavelengths here.

The visible color depends only on amount of bits in 5 bit groups: red, yellow, green, cyan, and blue. They are 9, 3, 6, 3, and 9 bits long, respectively. The position of bits within a group is preserved, but does not affect particle's color. More specifically color only depends on proportions of those amounts. To get white color, set the ctype to 0x3FFFFFFF or -1, which will enable all the wavelengths.

FILT uses the ctype field to store wavelengths too, however if ctype is 0, wavelengths are calculated from its temperature: it slowly changes from blue when cold, to red when hot. More specifically, a group of 5 bits is set, and starting from 0°C, every 40°C the group is red-shifted by 1, and after 25 shifts, at 1000°C, the group is shifted to the most red wavelengths.

Logic Component for Electronics

Because of the FILT's ability to change a BRAY or PHOT's Wavelength given a specific logical rule, you can treat is as a really powerful logical operator that single handedly allows for complex and large sized computations. It has the ability to store large amounts of binary info into a very small space. For a practiced person, FILT electronics are far simpler than any alternative. There is a list of modes below. Each mode fulfills a purpose. The and ,not, xor, and or gates give access to the base elements of a logic system. With this logic system there have been many who have made computers with enough room to spare accessories like a screen, keyboard, and large ROM.

FILT has many operation modes determined by its tmp property:

  1. "set" mode: FILT's spectrum is copied into PHOT particles that pass through it
  2. "and" mode: A bitwise and is performed on PHOT's and FILT's spectrums and the result is stored in the PHOT particle, any wavelengths not present in FILT will be removed from PHOT.
  3. "or" mode: Performs a bitwise or: all wavelengths present in FILT are "enabled" in PHOT, if not already.
  4. "sub" mode: Performs a bitwise and-not: all wavelengths present in FILT are subtracted from PHOT.
  5. "red shift" mode: The wavelengths of a photon are red-shifted. The distance of the shift is calculated from the temperature only: the ctype value of the FILT is ignored..
  6. "blue shift" mode: Like "red shift", but the shifting direction is opposite, wavelengths are moved towards the blue end.
  7. "nothing" mode: No spectrum changes are performed. Useful if you want to cross beams of PHOT and ARAY without mangling the spectrum
  8. "xor" mode: Performs a bitwise xor: all wavelengths present in FILT are "flipped" in PHOT's spectrum, that is, if some color was on, it turns off, and vice versa.
  9. "not" mode: Performs a bitwise not: all wavelengths of PHOT are flipped. Note that FILT's spectrum is ignored.
  10. "QRTZ scattering" mode: Randomizes photons' velocity and randomly changes their color, just like QRTZ in old versions of The Powder Toy.
  11. "variable red shift" mode: Shift bits toward the red side by how many bits are to the right of the least significant bit.
  12. "variable blue shift" mode: Same as "variable red shift" but shifts towards the blue side of the spectrum instead.

Any other tmp value makes FILT functionally equivalent to mode 6 (nothing). It is strongly recommended not to use any tmp's above those listed here, as the developers may add more modes for those tmp values in the future, which would break your save.

Almost all of these modes are all equivalent to an array of logic gates applying its logic across each of the thirty bits. FILT electronics are usually preformed by setting a BRAY to a specific value, and moving it through one or more FILT with a specific mode and/or value. Then reading the output. The output can be read by either putting it back into a line of FILT for later storage or calculation, or taken as either on or off, based on weather or not it could make it through the FILT.

FILT electronics sometimes use a common spark-able as an output, because if the operation that was preformed on the BRAY results in a zero, then the BRAY is terminated and nothing is sparked. In this way, you can get a binary 1 or 0 depending on weather or not the operation resulted in a 0. While this feature may be very useful sometimes, if it happens unexpectedly, you could be left without any BRAY at all and operation would stop. To avoid this, most people always set the 30th bit while doing their calculation so that there can be a zero in their calculations without it disappearing. For all operations this bit is ignored and exists solely to keep the BRAY around. But beware, having it there could seriously mess up your calculations if they include a part where they shift that bit out of place. Make sure to keep that bit where it belongs or get rid of it temporarily while you do something shifty.

FILT Memory Techniques

I'd say there are three linked ways to store your FILT, here they are.

  1. Easy storage. Sometimes we just need to get our data stored. No need for a technique right? Easy storage is about using one FILT per value, so that you can reference it later.
  2. Reference storage. Sometimes we have to work with some pretty large numbers. When your coding your computer, or if you are making a set of instructions for a printer, you don't want to have to write out these large, hard to remember numbers. Instead we can assign those big numbers to smaller and more manageable numbers. An example would be if you have five values. 537100575, 537085324, 536870975, 536870975, and 537052300. Each of these numbers are a direct data representation of a letter h, e, l, l, or o. Wouldn't it be nice if I could call them by their place in the alphabet? Just like this 8, 5, 12, 12, 15. Now instead of using around 18 bits to store a single letter, I'm using just 7
  3. FILT sharing storage. With this technique, you can write multiple values to the same FILT. Most of the time you use less than 7 bits in a FILT. This technique utilizes the remaining 23 bits by placing another 7 bits shifted onto the same spectrum. If you shift four seven bit numbers onto the same spectrum then that one FILT can be used for the storage of four numbers. If you want to single out a specific value from it you can just preform an and operation on it specifying the 7 bit range of binary that you want. Then to make it a normal number you just need to shift it a little. This technique can potentially quadruple your storage, but it's one requirement is that the size of the binary values have to be small enough to fit together on the same FILT. This is where using Reference Storage could help. Reference Storage would allow you to shrink the actual size of the value.

What if you used all of the techniques at once. The easy storage would contain the big complicated numbers. The reference storage would assign smaller numbers to those big numbers. And the sharing storage would make those small numbers take up less room. These three methods allowed mad-cow to make a storage system capable of holding the entire first book of the Harry Potter series.

DTEC can be used to modify FILT's ctype: when PHOT or BRAY is within the DTEC's range, DTEC copies the spectrum into a line of directly adjacent FILT blocks, if any are present.

LDTC can also be used to modify FILT's ctype: when it detects PHOT, BRAY, or even FILT itself, it will copy the spectrum only into a line or dot of FILT directly opposite the detected element. Because of how precise yet versatile LDTC is, LDTC is quickly taking over DTEC in most FILT based electronics.

FILT serialization

Serialization is the method in which someone would take a real world value and turn it into a single binary number. For example, if it is -257.42°C outside then you could say it was 16.73 degrees. No need to be so exact since people can't really tell the different. Serialization in TPT is done by putting the proper detector next to some FILT and setting it to the right mode. The detector will detect it's surroundings and write it's findings into adjacent FILT in binary. Cracker1000 made a wonderful tutorial about how to set up serialization below.

Decoration Color Changing

When CRAY fires through FILT, the deco color of the particles change to match the color of the FILT. BIZR also changes its deco color to the color of FILT when it passes through it.


Photons are very similar to BRAY. They can go through FILT and are acted upon through that FILT in the same way. There is one distinct difference however. That difference is that PHOT is an energy particle and as such, it is capable of stacking on top of itself up to the particle limit. It also has the bonus of being undying when it's life is set to 0. If you put a whole bunch of photons that all have their own wavelength into the same pixel, and if you take advantage of some DRAY, FRAY, or just DTEC, then you can read the top value on the stack of photons and discard the PHOT. The next PHOT is revealed and you can do the process again. Using this method you could have as much storage as you want.

Notable Saves

A thermometer using FILT.
A spectrum analyzer, which can detect the color of incoming photons.
A tutorial about setting and manipulating BRAY values with FILT.
A tutorial about serializing all environment variables into FILT spectrum and back.
Lesson 2 of subframe lessons, on FILT.