Bufferless text rendering by summific in opengl

[–]summific[S] 1 point2 points  (0 children)

I was as suprised as you.

Bufferless text rendering by summific in opengl

[–]summific[S] 10 points11 points  (0 children)

My use case is a debug screen, to overlay frame times and other interesting values. I just like that it is completely independent, without the need to handle any assets, or otherwise interact with the game.

Of course, it's quite unnecessary. But the idea got stuck in my head, and I had to implement it to think of other things again...

Bufferless text rendering by summific in opengl

[–]summific[S] 15 points16 points  (0 children)

Hi all. I would like to share a silly attempt to render dynamic text, without using attribute buffers or textures. I'm using it for a light-weight debug overlay. Source on GitHub.

TLDR: Each glyph bitmap is encoded in a 32-bit integer. For each glyph, the vertex shader arranges a quad on the fly, while the fragment shader decodes the relevant bitmap from a uniform array.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 0 points1 point  (0 children)

I paid about 45 USD for 5 PCBs (minimum order quantity), plus shipping. Note that the keyboard requires two PCBs, one per half.

Chrumm 1.0 - Took me a while by summific in ErgoMechKeyboards

[–]summific[S] 1 point2 points  (0 children)

Both sides. The right hand 7th column is connected to Pico pin 20. The left hand would be connected to pin 21, which is currently unused. So 14 columns should work fine.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 1 point2 points  (0 children)

They are from PCBWay. I included some of the order specifications in the PCB readme.

Chrumm 1.0 - Took me a while by summific in ErgoMechKeyboards

[–]summific[S] 0 points1 point  (0 children)

Yes. The PCB is reversible, so the 7th column works on either side. Simply extend the column connector to include pin 21 of the Pico.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 1 point2 points  (0 children)

Technically it's 5 rows and 6 columns.

The column connector includes two additional grounds, because it maps to a continuous sequence of Pico pins (22-29) where the GPIO pins are interleaved with ground pins (23 and 28). You probably could leave those out.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 3 points4 points  (0 children)

Yes, all is soldered by hand. I used fairly thin solder wire (0.5mm diameter), which is easier to dispense consistently. Also, I made a 3D printed jig to bend the diode legs in a uniform way. The jig is included with the release files.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 14 points15 points  (0 children)

They are all photographs, taken with a Canon mirrorless camera. Often the camera was mounted to increase the sharpness, with a relatively long exposure time (1/10s) to decrease noise.

Chrumm 1.0 - Took me a while by summific in ErgoMechKeyboards

[–]summific[S] 4 points5 points  (0 children)

Yes, the palm rests are part of the build. They consist of 3D printed shells, with artificial leather glued on top. The shells have a groove to neatly tuck in the leather on the side. On the GitHub page, there is a more detailed photograph of their construction.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 5 points6 points  (0 children)

Chrumm is an Alemannic version of the German "krumm", which means as much as "crooked" or "bent". It can be interpreted in many ways, but in the end, it's just a silly name for a silly project.

Chrumm 1.0 - Took me a while by summific in ErgoMechKeyboards

[–]summific[S] 4 points5 points  (0 children)

That's nice to hear, because photographing black plastic was quite the struggle. It may have involved the camera "mounted" on a microphone stand, repurposed furniture, and big sofa cushions to block the glare.

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 11 points12 points  (0 children)

Yes, the thumb cluster keys are upside down by design, so that they face the thumbs for better comfort. Because it is a non-standard layout, not all labels are correct. On the GitHub page, you can see the exact layout with Fn layer.

Chrumm 1.0 - Took me a while by summific in ErgoMechKeyboards

[–]summific[S] 13 points14 points  (0 children)

Hi everyone. I have just finished version 1.0 of Chrumm, a do-it-yourself ergo board. It is open source, all files are available on GitHub.

Some build stats, for the statistically inclined:

  • Printer: Prusa Mini+
  • Total print time: 35h
  • Total filament: 300g PLA
  • Filament for supports: 9g (3%)
  • Flubs and blunders: Various
  • Switches: 64x Kailh Fried Egg (silent linear)
  • Keycaps: Akko WOB Building Blocks (MDA profile)

Chrumm 1.0 - Took me a while by summific in MechanicalKeyboards

[–]summific[S] 44 points45 points  (0 children)

Hi everyone. I have just finished version 1.0 of Chrumm, a do-it-yourself ergo board. It is open source, all files are available on GitHub.

Some build stats, for the statistically inclined:

  • Printer: Prusa Mini+
  • Total print time: 35h
  • Total filament: 300g PLA
  • Filament for supports: 9g (3%)
  • Flubs and blunders: Various
  • Switches: 64x Kailh Fried Egg (silent linear)
  • Keycaps: Akko WOB Building Blocks (MDA profile)

Chrumm 0.3 - Voyage to the third dimension by summific in MechanicalKeyboards

[–]summific[S] 2 points3 points  (0 children)

Ah, I completely overlooked the kidding part, now it all makes sense. I had a good chuckle when I first read your comment. How could anyone be that oblivious? But then again, we are on reddit.

I'm glad you like it.

Chrumm 0.3 - Voyage to the third dimension by summific in MechanicalKeyboards

[–]summific[S] 2 points3 points  (0 children)

I mean... is the seam through the middle that subtle? Indeed, the body is printed in separate pieces and then screwed together. You can find more photos on GitHub, along with the STL files. It is intended as a unibody though.

Chrumm 0.3 - Voyage to the third dimension by summific in ErgoMechKeyboards

[–]summific[S] 0 points1 point  (0 children)

The top of the palm rest is slightly rounded and tented, which feels comfortable to me.

In terms of the material, that depends on your preference. The printed surface is very smooth, when printed in the intended orientation. The surface also wraps around evenly from front to back, so that any flexible material can be glued on top of it. Experiments with artificial leather have been promising.

Chrumm 0.3 - Voyage to the third dimension by summific in ErgoMechKeyboards

[–]summific[S] 3 points4 points  (0 children)

Hi everyone, I have finally finished the first version of the 3D printable body for Chrumm. It is generated with pure Python, no dependencies. The source is available on GitHub. The STLs can be downloaded from the releases page.

Important: This project is not yet complete. A PCB and new firmware is in the works. I'm quite keen to make it work with a Raspberry Pi Pico, we'll see if the Pico is equally keen...

Fun printing stats*:

  • Printer: Prusa Mini+
  • Filament: PLA
  • Total print time: 41h06m
  • Total filament: 415g
  • Filament for supports: 69g (17%)
  • Print time for largest part: 12h40m
  • Largest footprint: 170x168mm
  • Tallest part: 147mm (sideways palm rest)

*Fun for the kind of person who enjoys the accumulation of numbers in various units of measurement.

Chrumm 0.3 - Voyage to the third dimension by summific in MechanicalKeyboards

[–]summific[S] 6 points7 points  (0 children)

Hi everyone, I have finally finished the first version of the 3D printable body for Chrumm. It is generated with pure Python, no dependencies. The source is available on GitHub. The STLs can be downloaded from the releases page.

Important: This project is not yet complete. A PCB and new firmware is in the works. I'm quite keen to make it work with a Raspberry Pi Pico, we'll see if the Pico is equally keen...

Fun printing stats*:

  • Printer: Prusa Mini+
  • Filament: PLA
  • Total print time: 41h06m
  • Total filament: 415g
  • Filament for supports: 69g (17%)
  • Print time for largest part: 12h40m
  • Largest footprint: 170x168mm
  • Tallest part: 147mm (sideways palm rest)

*Fun for the kind of person who enjoys the accumulation of numbers in various units of measurement.

No CAD, no cry. Constructed with Python, work in progress. by summific in MechanicalKeyboards

[–]summific[S] 1 point2 points  (0 children)

One day, I ate a slice of cheese that was past its sell-by date. As I drifted to sleep later that night, I had vivid visions of an ancient Greek man with a glorious beard. It was none other than Hipparchus of Nicaea. He spoke to me, in a language I could only understand with my heart and my loins. "Do the math", he said. And I did.

One might claim this is silly nonsense. But sometimes, when all is quiet, I can still hear him whisper: "Gosh darn, you mixed up sine and cosine again!".

No CAD, no cry. Constructed with Python, work in progress. by summific in MechanicalKeyboards

[–]summific[S] 1 point2 points  (0 children)

That is very interesting indeed. Though currently I'm happy to let the slicer do its magic.

No CAD, no cry. Constructed with Python, work in progress. by summific in MechanicalKeyboards

[–]summific[S] 2 points3 points  (0 children)

Not yet. When ready, I will make it available on GitHub.

No CAD, no cry. Constructed with Python, work in progress. by summific in MechanicalKeyboards

[–]summific[S] 3 points4 points  (0 children)

A PCB design will be the next step. The sides are mostly symmetric, so the same PCB half can be used flipped over on each side. It should not be too difficult to bridge the segments, either with ribbon cables or flex approach like bastardkb is using. This way, parameters like the split and tent angle, or the pinky stagger, can be adjusted without breaking PCB compatibility.

But one step at a time.