summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OPEN ME.unity131
-rw-r--r--generate_fft_reference.py9
-rw-r--r--mandrill_256x256.exrbin532830 -> 532820 bytes
3 files changed, 107 insertions, 33 deletions
diff --git a/OPEN ME.unity b/OPEN ME.unity
index b5c41e4..a98b17c 100644
--- a/OPEN ME.unity
+++ b/OPEN ME.unity
@@ -224,12 +224,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153538671}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 1717151656}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &213933862
GameObject:
@@ -330,12 +330,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 213933862}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 1717151656}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &358170787
GameObject:
@@ -504,12 +504,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 387836998}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 983355411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &562951493
GameObject:
@@ -610,12 +610,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 562951493}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 7, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 983355411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &571412497
GameObject:
@@ -716,12 +716,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 571412497}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 4, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 983355411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &599917952
GameObject:
@@ -822,12 +822,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 599917952}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 1717151656}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &609077999
GameObject:
@@ -1034,12 +1034,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 612474623}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 8, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 983355411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &773866676
GameObject:
@@ -1140,12 +1140,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 773866676}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 2, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 1717151656}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &785989655
GameObject:
@@ -1246,12 +1246,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785989655}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 6, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
+ m_Father: {fileID: 983355411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &824710677
GameObject:
@@ -1352,11 +1352,47 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 824710677}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 3, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
+ m_Father: {fileID: 1717151656}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &983355410
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 983355411}
+ m_Layer: 0
+ m_Name: IFFT
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &983355411
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 983355410}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 571412501}
+ - {fileID: 387837002}
+ - {fileID: 785989659}
+ - {fileID: 562951497}
+ - {fileID: 612474627}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1069902874
@@ -1572,7 +1608,7 @@ GameObject:
- component: {fileID: 1242669368}
- component: {fileID: 1242669367}
m_Layer: 0
- m_Name: passthrough
+ m_Name: luminance
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -1658,11 +1694,48 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1242669366}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
+ m_Father: {fileID: 1717151656}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1717151655
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1717151656}
+ m_Layer: 0
+ m_Name: FFT
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1717151656
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1717151655}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1242669370}
+ - {fileID: 213933866}
+ - {fileID: 153538675}
+ - {fileID: 599917956}
+ - {fileID: 773866680}
+ - {fileID: 824710681}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1787983409
@@ -1910,8 +1983,11 @@ MonoBehaviour:
- {fileID: 2100000, guid: ef7b3b20954e1f0419b7adf268df2650, type: 2}
- {fileID: 2100000, guid: 365ea70c6b535dc49b05bf0c1ff6ba5f, type: 2}
- {fileID: 2100000, guid: ee8f29cf44fa87f46a1417c25af26824, type: 2}
+ - {fileID: 2100000, guid: d924df630b01842449ed5cd5a8ffee97, type: 2}
+ - {fileID: 2100000, guid: de23af3d6f8065d4e89cb057b0cd99ec, type: 2}
- {fileID: 2100000, guid: 652ab864a0319244693b307366e8a107, type: 2}
- {fileID: 2100000, guid: 529b8b96dc28ae14381ede5d8ca8e97c, type: 2}
+ - {fileID: 2100000, guid: 1544f59a65453084d9689c1a3897174e, type: 2}
- {fileID: 2100000, guid: caffb11975a532c48928f00ce876fda6, type: 2}
- {fileID: 2100000, guid: be55571ca9818ba4c9b853a41baf33c7, type: 2}
LightMapsNear: []
@@ -2096,15 +2172,6 @@ SceneRoots:
- {fileID: 7606902903243430487}
- {fileID: 358170790}
- {fileID: 1188641759}
- - {fileID: 1242669370}
- - {fileID: 213933866}
- - {fileID: 153538675}
- - {fileID: 599917956}
- - {fileID: 773866680}
- - {fileID: 824710681}
+ - {fileID: 1717151656}
- {fileID: 609078003}
- - {fileID: 571412501}
- - {fileID: 387837002}
- - {fileID: 785989659}
- - {fileID: 562951497}
- - {fileID: 612474627}
+ - {fileID: 983355411}
diff --git a/generate_fft_reference.py b/generate_fft_reference.py
index a7d58f4..db2289d 100644
--- a/generate_fft_reference.py
+++ b/generate_fft_reference.py
@@ -18,10 +18,13 @@ def main():
# Load input image and convert to luminance
img = Image.open(args.input).convert('RGB')
- img = img.resize((args.size, args.size), Image.Resampling.LANCZOS)
+ img = img.resize((args.size, args.size), Image.Resampling.NEAREST)
img_array = np.array(img, dtype=np.float32) / 255.0
luminance = 0.2126 * img_array[:,:,0] + 0.7152 * img_array[:,:,1] + 0.0722 * img_array[:,:,2]
+ # Unity's UV origin is bottom-left, NumPy/PIL's is top-left; flip vertically to align
+ luminance = np.flipud(luminance)
+
# Perform 2D FFT (no fftshift, matching GPU implementation)
fft_result = np.fft.fft2(luminance)
@@ -30,6 +33,10 @@ def main():
real_part = fft_result.real.astype(np.float32)
imag_part = fft_result.imag.astype(np.float32)
+ # Unity's output texture also uses bottom-left origin, so flip output too
+ real_part = np.flipud(real_part)
+ imag_part = np.flipud(imag_part)
+
# Create EXR
height, width = args.size, args.size
header = OpenEXR.Header(width, height)
diff --git a/mandrill_256x256.exr b/mandrill_256x256.exr
index 01c4a3a..b1322a1 100644
--- a/mandrill_256x256.exr
+++ b/mandrill_256x256.exr
Binary files differ