Which cameras do LightPhotos and LightCraft support?
I tested 18 RAW files at preview and full size. Every engine used the same sharpening and color noise reduction. The camera setting matters. So does the path from sensor data to screen pixels.
- Input Open RAW file
- Apple RAW Develop at preview size
- GPU Render base color
- GPU Sharpen + color NR
- Output 2560 px RGBA8
Apple renders at the preview size. The same shared GPU detail pass then sharpens the image and reduces color noise.
- Input Open RAW file
- Apple RAW Develop at full size
- GPU Render base color
- GPU Sharpen + color NR
- Output Full-size RGBA8
Apple develops at full size, then uses the shared GPU detail pass. Its adjustable native detail filters are off where supported.
- CPU Unpack sensor data
- CPU Develop + resize
- CPU Convert base color
- GPU Sharpen + color NR
- Output 2560 px RGBA8
Rawler develops the full image, then shrinks it on the CPU. This test adds the same shared GPU detail pass as the other engines.
- CPU Unpack sensor data
- CPU Develop at full size
- CPU Convert base color
- GPU Sharpen + color NR
- Output Full-size RGBA8
Rawler develops the full image on the CPU without a preview resize. The shared GPU pass then applies sharpening and color noise reduction.
- CPU Unpack sensor data
- CPU Reduce + develop
- GPU Render base color
- GPU Sharpen + color NR
- Output 2560 px RGBA8
LightCraft can reduce sensor data first. Its native detail filters are off; it uses the same shared GPU pass as the other engines.
- CPU Unpack sensor data
- CPU Develop at full size
- GPU Render base color
- GPU Sharpen + color NR
- Output Full-size RGBA8
LightCraft develops at full size without sensor binning, then uses the shared GPU detail pass. Its native detail filters are off.
LightCraft has its own RAW engine. I tested each engine with the same files at two sizes: a 2560-pixel preview and full resolution. Both tests produce sRGB RGBA8 display pixels with sharpening and color noise reduction.
The result
LightPhotos uses Apple's Core Image on Mac and rawler on other platforms (Windows, Linux and the browser). The Apple RAW and rawler bars below show those two engines.
Decode failures
Out of 18 RAW files · lower is better
Time for preview
2560 px preview · same 16 files · lower is better
Time for full resolution
Full resolution · same 16 files · lower is better
Mac mini, Apple M4, 16 GB RAM, macOS 26.5.2
Both time charts use the same 16 files decoded by all three engines. Each total adds the median times from five runs per file. Failed files do not count as zero time. Full resolution means the original file's developed dimensions; there is no preview reduction.
Why the times differ
Rawler develops the full image on the CPU before it makes a preview. Apple can develop at the requested size. LightCraft can reduce the sensor data first. After base color rendering, all three use the same GPU pass: sharpening at 40 and color noise reduction at 25.
Rawler has no built-in GPU mode. The test adds a GPU detail pass after its CPU development. This is a controlled test path, not the complete LightPhotos path. LightPhotos also has faster preview paths in the browser.
At full size, preview reduction is off. Rawler can skip its preview resize, but all engines must process more pixels in the shared detail pass. The filters and settings match; the RAW color and tone rendering still differ.
Check the camera and the setting
- Nikon Z f: lossless NEF worked in all three. High Efficiency NEF worked only in Apple RAW.
- Olympus: the E-1 file worked in all three. The E-M1's compressed ORF failed in LightCraft.
- Fujifilm: both compressed X-T5 files worked in all three engines. LightPhotos still has separate X-Trans preview limits. A decoder pass does not prove that every app feature works.
A JPEG preview inside a RAW file does not count as a sensor decode. These results apply to the files tested, not every mode from each camera. Apple's column uses Core Image first, as LightPhotos does. All files passed that path, so its ImageIO fallback was not needed.
See all 18 files and their render times
Use the size buttons in the diagram to switch this table.
| Camera and mode | Apple RAW | rawler 0.8.0 | LightCraft RAW |
|---|---|---|---|
| Sony A7 IV14-bit, 4608 × 3072 | 182.6 ms | 289.4 ms | 164.6 ms |
| Sony A7 IVLossless compressed, Large | 370.1 ms | 549.5 ms | 337.1 ms |
| Canon EOS 5D Mark IIICR2 | 160.7 ms | 547.5 ms | 382.5 ms |
| Canon EOS R5 Mark IICR3 RAW | 726.4 ms | 942.9 ms | 399.0 ms |
| Canon EOS R5 Mark IICR3 C-RAW | 557.8 ms | 975.3 ms | 592.1 ms |
| Nikon Z fLossless compressed NEF | 289.2 ms | 525.4 ms | 287.2 ms |
| Nikon Z fHigh Efficiency NEF | 300.5 ms | Failed | Failed |
| Fujifilm X-A514-bit Bayer, uncompressed RAF | 154.8 ms | 415.4 ms | 205.3 ms |
| Fujifilm X-T5Compressed X-Trans RAF, sample 6122 | 349.2 ms | 842.0 ms | 413.3 ms |
| Fujifilm X-T5Compressed X-Trans RAF, sample 6123 | 411.8 ms | 882.8 ms | 389.3 ms |
| Panasonic Lumix S5 IIRW2 | 384.0 ms | 519.2 ms | 299.4 ms |
| Olympus E-1ORF | 106.6 ms | 97.1 ms | 162.4 ms |
| Olympus OM-D E-M1Compressed ORF | 294.2 ms | 492.6 ms | Failed |
| Pentax K-rPEF | 156.6 ms | 305.7 ms | 354.2 ms |
| Samsung NX200SRW | 136.5 ms | 451.2 ms | 263.2 ms |
| Ricoh GR IIICamera-native DNG | 374.3 ms | 573.7 ms | 387.9 ms |
| iPhone 12 ProProRAW DNG | 174.9 ms | 349.8 ms | 314.5 ms |
| Canon EOS 5D Mark III via Adobe DNG ConverterLinear DNG, lossless JPEG | 111.5 ms | 231.5 ms | 302.7 ms |
| Camera and mode | Apple RAW | rawler 0.8.0 | LightCraft RAW |
|---|---|---|---|
| Sony A7 IV14-bit, 4608 × 3072 | 327.4 ms | 394.9 ms | 544.1 ms |
| Sony A7 IVLossless compressed, Large | 1152.5 ms | 1183.0 ms | 1415.0 ms |
| Canon EOS 5D Mark IIICR2 | 438.6 ms | 730.3 ms | 963.0 ms |
| Canon EOS R5 Mark IICR3 RAW | 2014.0 ms | 1818.5 ms | 2148.9 ms |
| Canon EOS R5 Mark IICR3 C-RAW | 2225.7 ms | 1630.7 ms | 2253.3 ms |
| Nikon Z fLossless compressed NEF | 581.9 ms | 766.7 ms | 1130.1 ms |
| Nikon Z fHigh Efficiency NEF | 753.0 ms | Failed | Failed |
| Fujifilm X-A514-bit Bayer, uncompressed RAF | 584.2 ms | 621.8 ms | 1099.5 ms |
| Fujifilm X-T5Compressed X-Trans RAF, sample 6122 | 1106.3 ms | 1711.3 ms | 1620.6 ms |
| Fujifilm X-T5Compressed X-Trans RAF, sample 6123 | 1295.7 ms | 1439.6 ms | 1588.5 ms |
| Panasonic Lumix S5 IIRW2 | 752.6 ms | 783.5 ms | 1298.5 ms |
| Olympus E-1ORF | 207.8 ms | 126.2 ms | 311.8 ms |
| Olympus OM-D E-M1Compressed ORF | 544.2 ms | 601.4 ms | Failed |
| Pentax K-rPEF | 274.5 ms | 380.7 ms | 625.9 ms |
| Samsung NX200SRW | 378.5 ms | 581.3 ms | 1116.2 ms |
| Ricoh GR IIICamera-native DNG | 751.4 ms | 705.1 ms | 973.3 ms |
| iPhone 12 ProProRAW DNG | 275.5 ms | 418.5 ms | 408.3 ms |
| Canon EOS 5D Mark III via Adobe DNG ConverterLinear DNG, lossless JPEG | 198.0 ms | 232.7 ms | 511.6 ms |
What this test measures
All engines returned the same image size and pixel format. Workers stayed open. Apple reused its render context. Each engine had a warm-up pass. We then ran five rounds in a mixed order, with warm file caches and no saved image results. Time includes reading the file, RAW processing, any resize and the transfer of GPU results to memory. Full-resolution runs disable preview scaling and sensor binning. Both sizes use 8-bit output; this is not a 16-bit export test.
Apple's adjustable detail filters are off where supported. LightCraft's native detail filters are also off. We then apply the same GPU sharpening and color noise reduction to each output, with the same settings and working color space. This does not remove processing already baked into a camera file or make the RAW colors identical.
The time adds RAW conversion and the shared detail pass. Moving pixels between the test programs is not timed; all three use the same handoff. This compares controlled processing work, not equal final quality or the speed of either app with its normal defaults.
For more cameras, see the support lists from Apple for macOS 26, rawler and LightCraft. The source photos are public CC0 files from raw.pixls.us.