nightpeak

A 3D game engine I wrote in Rust, and four places I built with it: a lounge, a diner, a manor and a mountain road.

Rust / wgpu / WGSLOpen project
A lounge with a lit checkerboard dance floor, red curtains and a sunset on the stage screen.
A manor at night with every window lit, in the snow.
A roadside diner at night with cars parked outside.
A long bar with a backlit wall of bottles.

Matrix light transport

A renderer that computes bounced light with matrix math on the GPU instead of random rays, so the image has no noise.

CUDA C++ / Python / Tensor coresOpen project
Eight renders of the same box room, each lit by a different colour of light.

Anti-unification compressor

A compressor that finds the repeated templates in a file and stores only the parts that change. Tested on 1 GB of Wikipedia.

C / enwik9Open project
16,724 ×[[Category:⟨gap⟩]]
483 ×└─ American ⟨gap⟩
217 ×└─ History of ⟨gap⟩
8,659 ×<text xml:space="preserve">⟨gap⟩
2,078 ×└─ #REDIRECT [[⟨gap⟩
370 ×└─ [[Image:⟨gap⟩.jpg|thumb|⟨gap⟩]]

AlphaFold on flexible proteins

I compared AlphaFold's predictions with lab measurements for 140 flexible proteins. It gets the rigid sections right and misplaces them relative to each other.

Python / AlphaFold DB / NMR ensemblesOpen project
0.50.511225510102020no differenceNFATC1: 4.52 Å whole, 4.29 Å by sectionLif: 5.9 Å whole, 2.52 Å by sectionHmgb1: 3.22 Å whole, 2.2 Å by sectionCTLA4: 4.19 Å whole, 2.14 Å by sectionSOS1: 3.73 Å whole, 3.03 Å by sectionBTK: 3.11 Å whole, 0.94 Å by sectionNos1: 8.91 Å whole, 4.71 Å by sectionIL4: 2.9 Å whole, 1.86 Å by sectionBlk: 7.43 Å whole, 6.32 Å by sectionStx1a: 2.14 Å whole, 1.92 Å by sectionPLA2G1B: 1.8 Å whole, 1.45 Å by sectionenvZ: 8.3 Å whole, 2.68 Å by sectionMSP1: 3.86 Å whole, 1.09 Å by sectionC5: 5.77 Å whole, 3.02 Å by section1COU: 9.36 Å whole, 2.99 Å by sectionPTPN13: 2.53 Å whole, 1.94 Å by sectionSGS1: 1.66 Å whole, 0.89 Å by sectionRAD53: 3.3 Å whole, 1.73 Å by sectionrub: 4.07 Å whole, 2.43 Å by sectionFOXO4: 2.06 Å whole, 1.49 Å by sectionCNOT4: 13.88 Å whole, 1.81 Å by sectionSin3b: 3.03 Å whole, 0.61 Å by sectionPIN4: 3.79 Å whole, 3.36 Å by sectionada: 8.01 Å whole, 2.51 Å by sectionBAX: 3.86 Å whole, 1.79 Å by sectionLDLR: 8.95 Å whole, 1.02 Å by sectionCrebbp: 1.34 Å whole, 0.67 Å by sectionFRQ1: 5.16 Å whole, 3.42 Å by sectionarcB: 3.02 Å whole, 1.17 Å by sectionMcl1: 1.74 Å whole, 0.9 Å by sectionPard3: 1.65 Å whole, 0.92 Å by sectionTARBP2: 1.35 Å whole, 0.88 Å by sectionKDM5D: 10.54 Å whole, 0.91 Å by sectionGTF2IRD1: 6.33 Å whole, 1.26 Å by sectionPTPRF: 1.04 Å whole, 0.89 Å by sectionPLA2G1B: 2.52 Å whole, 2.37 Å by sectionTRIP4: 2.04 Å whole, 0.87 Å by sectionABLIM2: 2.38 Å whole, 1.72 Å by sectionCbfb: 2.62 Å whole, 2.35 Å by sectionPrkn: 1.01 Å whole, 0.7 Å by sectionPLAA: 6.93 Å whole, 1.07 Å by sectionPlcg1: 11.12 Å whole, 4.74 Å by sectionpdp1: 3.44 Å whole, 0.96 Å by sectionSH3YL1: 2.27 Å whole, 0.56 Å by sectionSOST: 37.02 Å whole, 2.32 Å by sectionXRCC1: 1.96 Å whole, 1.65 Å by sectionPHF24: 4.75 Å whole, 2.76 Å by sectionSh2b2: 6.62 Å whole, 1.31 Å by sectionCYLD: 2 Å whole, 1.49 Å by sectionZfyve19: 4.89 Å whole, 0.84 Å by sectionSbf1: 1.84 Å whole, 1.42 Å by section2LJV: 2.21 Å whole, 1.13 Å by sectionglpG: 18.02 Å whole, 0.97 Å by sectionU2af2: 1.59 Å whole, 1.17 Å by sectionM50: 6.73 Å whole, 4.61 Å by sectionSRSF2: 11.2 Å whole, 1.94 Å by sectionNudc: 11.29 Å whole, 5.76 Å by sectionAPLF: 11.87 Å whole, 0.87 Å by sectionSCRIB: 1.81 Å whole, 1.69 Å by sectionPlcg2: 3.13 Å whole, 2.4 Å by sectionCLIP3: 1.76 Å whole, 1.24 Å by sectionC7: 4.2 Å whole, 1.36 Å by sectioncheA: 2.38 Å whole, 1.09 Å by sectionRbm28: 4.8 Å whole, 2.89 Å by sectionREV1: 2.27 Å whole, 0.86 Å by sectionNsd1: 1.44 Å whole, 0.76 Å by sectionUSP16: 2.36 Å whole, 0.98 Å by sectionCREBBP: 1.35 Å whole, 0.9 Å by sectionMYBPC1: 16.16 Å whole, 8.27 Å by sectionMtif3: 2.15 Å whole, 1.35 Å by sectionIFNAR2: 4.17 Å whole, 2.04 Å by sectionZHX1: 10.52 Å whole, 1.09 Å by sectionRIMBP3: 3.78 Å whole, 0.61 Å by sectionDlg4: 11.69 Å whole, 1.39 Å by sectionUFD1: 2.48 Å whole, 0.94 Å by sectionBAK1: 3.82 Å whole, 3.1 Å by sectionNAB1: 2.91 Å whole, 2.19 Å by sectionXRCC5: 2.63 Å whole, 1.2 Å by sectionItk: 2.76 Å whole, 1.93 Å by sectionGADD45A: 9.45 Å whole, 1.79 Å by sectionDLG5: 5.22 Å whole, 1.09 Å by sectionHMA4: 8.74 Å whole, 0.66 Å by sectionPKN1: 3.89 Å whole, 0.67 Å by sectionDda3937_01343: 11.11 Å whole, 6.86 Å by sectionNcam1: 1.07 Å whole, 1.06 Å by sectionSLC8A1: 18.26 Å whole, 1.54 Å by sectionPTK2B: 3.25 Å whole, 2.21 Å by sectionHECTD1: 8.15 Å whole, 0.72 Å by sectionMark3: 2.46 Å whole, 2.11 Å by sectionMyo6: 2.67 Å whole, 0.71 Å by sectionalcR: 6.04 Å whole, 3.08 Å by sectionFCER2: 6.27 Å whole, 3.78 Å by sectiontraI: 16.17 Å whole, 4.9 Å by sectionDtx2: 6.72 Å whole, 6.33 Å by sectionOnecut1: 16.65 Å whole, 4.41 Å by sectionPRNP: 4.1 Å whole, 2.5 Å by sectiontomB: 3.18 Å whole, 0.91 Å by sectionkdpD: 10.49 Å whole, 3.75 Å by sectionS100A1: 5.07 Å whole, 3.68 Å by sectionDSY0195: 3.28 Å whole, 3.05 Å by sectionARHGAP4: 5.48 Å whole, 0.65 Å by sectionVAV2: 2.73 Å whole, 0.9 Å by sectionDkk2: 4.86 Å whole, 2.09 Å by sectionsmo: 3.21 Å whole, 3.09 Å by sectionFoxd3: 6.62 Å whole, 3.17 Å by sectionSnta1: 23.93 Å whole, 15.9 Å by sectionIGHMBP2: 1.76 Å whole, 1.14 Å by sectionPSAP: 5.68 Å whole, 1.32 Å by sectionAIRE: 8.38 Å whole, 1.23 Å by sectionBC_2506: 6.85 Å whole, 0.94 Å by sectionTJP1: 9.25 Å whole, 1.2 Å by sectionmvn: 1.45 Å whole, 1.03 Å by sectionRCVRN: 11.76 Å whole, 6.17 Å by sectionNCAM1: 3.96 Å whole, 3.31 Å by sectionSMARCA2: 18.59 Å whole, 9.88 Å by sectionPARP1: 6.33 Å whole, 1.07 Å by sectionPlek: 1.21 Å whole, 0.92 Å by sectionSHQ1: 2.5 Å whole, 2.02 Å by sectionAMA-1: 17.83 Å whole, 11.85 Å by sectionSRSF1: 9.28 Å whole, 0.86 Å by sectionEUBREC_1200: 2.03 Å whole, 1.02 Å by sectionMGG_03307: 10.56 Å whole, 1.1 Å by section2N8K: 1.42 Å whole, 0.86 Å by section1PSY: 10.79 Å whole, 2.52 Å by sectionTSEN15: 2.86 Å whole, 2.04 Å by sectionNHP2: 3.14 Å whole, 1.84 Å by sectionOSBPL8: 2 Å whole, 1.47 Å by sectionSos1: 7.94 Å whole, 4.26 Å by sectionMED25: 3.59 Å whole, 1.68 Å by sectionBCR: 8.45 Å whole, 2.45 Å by sectionSMURF2: 1.49 Å whole, 1.21 Å by sectionSYT13: 2 Å whole, 0.91 Å by sectionCESA7: 7.19 Å whole, 1.1 Å by sectionPARD3: 3.67 Å whole, 1.47 Å by sectionHCH_03072: 2.13 Å whole, 0.75 Å by sectionMPP1: 1.88 Å whole, 1.74 Å by sectionCYB_2465: 5.59 Å whole, 1.6 Å by sectionTXNDC5: 1.2 Å whole, 0.91 Å by sectionHDGF: 7.39 Å whole, 3.43 Å by sectionCnot4: 3.73 Å whole, 2.58 Å by sectionError with the whole protein aligned at once (Å)Error with each section aligned separately (Å)

In progress

  • Language model vs. a transformerA recurrent language model of my own design, trained against a transformer of the same size on the same data.
  • Room lights that follow the screenTuya smart bulbs controlled from my own code so the room takes on the colours of the film that is playing.
  • Plasma disruption predictionPredicting plasma disruptions from sensor data a few steps ahead.

Also built

  • Voxel path tracerA path tracer for voxel scenes written as a GPU compute shader.
  • CUDA path tracerAn unbiased path tracer, used as the reference for the matrix renderer.
  • lanternA candle-lit room built in the Bevy engine.
  • deltaloopA language model that keeps a learned state in place of attention.
  • loopformerA transformer that loops a shared block of layers.
  • hippocampusA runnable model of the hippocampus.
  • roomshareLow-latency screen sharing and voice chat for a few people.
  • watchsyncWatching a video in sync with a friend.
  • lecternA background lecture recorder that saves lossless audio.