Tuesday, February 5, 2019

Graphics

I wanted to eliminate my geometry shader so I could brag that my microcode runs fast, but I also wanted to show off my facets. The idea of decorating facets with pictures gave me an aha when I realized it would make rotation about the normal more useful. But for some time I could not figure out how to feed texture coordinates to the vertex shader. Note that duplicating the points was unacceptable to me, not because of memory constraints, but for aesthetic reasons; duplicating points violates topological reality. Since limiting planes to have at most one facet is acceptable to me, disallowing kissing vertices is ok, and facets separate polytope regions from non-polytope regions, I can limit vertices to have at most 3 facets in 3 dimensions. Then the challenge was to get the vertex shader to choose the correct texture color, texture weights, and texture coordinates. I wondered if each facet could be assigned a tag valid for all of its vertices. All the vertex shader need do is lookup its texture vectors by a uniform tag. Assigning a tag to each facet is a graph coloring problem. Using a greedy algorithm, no more than n+1 graph colors are needed, where n is the maximum degree of the graph nodes. Here, graph nodes are polytope facets, graph connections are shared polytope vertices, and graph colors are facet tags. A facet can have any number of vertices, but in 3 dimensions, it can be decomposed into 3 vertex facets. Modify the greedy algorithm to assign the same tag to facets in the same decomposition. Triangle facets have 6 vertex sharing neighbors, so 7 tags are needed. Thus each vertex needs 3 texture vectors, and the tag uniform needs to be changed 7 times.

Monday, February 4, 2019

Minimalism

There are several kinds and fields of minimalism. I know enough art theory and history to claim ignorance about art minimalism. Minimalism with a capital M has come to mean small houses or few possessions. But small and few are poorly defined; say small or few to a mathematician, I dare you. Minimalism in software language means Lua and such. Minimalism in software design means user interfaces like double dash files that melt the distinctions between automation, configuration, and interaction. Minimalism in backpacking can mean ultra-light and/or general purpose. Backpacking mores can be applied to behavior in general. Leave only footprints and take only pictures translates to minimize your carbon footprint and respect indigenous priority. Does one opt for high tech or tried and tested. Does one prefer expert approved or do it yourself. Does one keep a clean living space or minimize the amount of manintenance. Does one emulate a storage, workshop, or ship? Engineers claim to admire simplicity, but each interprets the word differently. Some lean towards architecture, and adopt descriptive identifiers and formulaic comments. I lean away from architecture, and opt for shorter identifiers, fewer lines of code, and imaginative comments. I take a similar approach to society. Corporate life is a bath of deception and secrecy. The claimed merit is productivity, but in practice that means toeing the line. Methodology claims to enhance reuse, but actually just makes marketing easier by reducing innovation. Similar dynamics occur in other hierarchical parts of society. Trickle down economics claims to raise all boats, but actually just crams more sardines into the same can.