blob: 779e15986e4a07463a9f372fdf4353c45064a00b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/usr/bin/env python3
# This is the algorithm that the anti-aliasing logic inside
# TaSTT_lighting_template.cginc uses.
from math import fmod
x = .5
y = .1
aa = 10
# This lets us handle values smaller than 1. We're creating an m*n rectangle
# and walking a path left-to-right, top-to-bottom through it.
x_cap = max(x, 1.0 / x)
y_cap = max(y, 1.0 / y)
print(f"{x_cap} {y_cap}")
def lerp(lo, hi, fract):
return lo + (hi - lo) * fract
for i in range(0, aa):
# We want to subdivide an x*y area into `aa` evenly spaced pieces.
region = x_cap * y_cap
stride = region / aa
region_i = i * stride + stride/2
region_x = region_i / y_cap
region_y = fmod(region_i, y_cap)
print(f"{region_x} {region_y}")
region_x = lerp(0, x, region_x / x_cap)
region_y = lerp(0, y, region_y / y_cap)
print(f"{region_x} {region_y}")
assert(region_x >= 0)
assert(region_x <= x)
assert(region_y >= 0)
assert(region_y <= y)
|