Skip to content

Instantly share code, notes, and snippets.

View Aeva's full-sized avatar

Aeva Aeva

View GitHub Profile
@Aeva
Aeva / jta.py
Created September 23, 2015 02:50
parsing some data from jta 3D model in python
import json
import numpy
import base64
def open_model(path):
jta = json.load(open(path, "r"))
attrs = []
for attr in jta['attributes']:
v_blob = base64.b64decode(attr['vertices']['position']['data'])
i_blob = base64.b64decode(attr['polygons']['data'])
@Aeva
Aeva / assistive.org
Created October 6, 2015 20:18
assistive tech wishlist

personal assistive tech wishlist

The following is listed more or less in order in how much I desire the particular thing. Some of them are just things I need to sit down one afternoon and sort out.

The obvious themes below are:

  • hearing damage
  • the fact that I am using a computer for most of my waking hours, and the physical tole that it has on my body
  • managing distractions, improving my ability to communicate
@Aeva
Aeva / vertex_skinning_notes.org
Created November 29, 2015 08:49
notes on adding vertex skinning to mgrl

soft body animation, round 2

gist

shower musings:

The infulencing bones as they are calculated for the current frame are stored in a vec4 texture lookup. The lookup is 4px in height and Npx wide, where N is the number of bones in the model. Thus, RGBA is the row, and H in the column.

As for attributes, the model has per vertex the following:

@Aeva
Aeva / p4ignore_howto.org
Last active February 1, 2025 18:16
p4ignore tutorial

The p4ignore file lives in the client root directory, and is enabled with the following command:

> p4 set P4IGNORE=p4ignore.txt

When enabled, file paths that match the pattern described will be ignored when adding changes or new files. For example, this is used to exclude build results and tempfiles so as to keep change logs cleaner and prevent unnecessary merge conflicts.

@Aeva
Aeva / vore_simulator.org
Created September 11, 2016 23:49
"GET HUGE" design doc thing

gettin huge / vore simulator

abstract

Godzilla esque stompy game but you start as a smol creature, and gradually eat your way up the food chain and dramatically increase in size.

Aka “get huge”.

Basic point though is being a godzilla monster at various scales.

@Aeva
Aeva / generated_picking_pass_renderer.js
Created September 30, 2016 03:58
Generated Picking Pass Renderer
var camera = this.graph.camera || null;
var graph = this.graph;
var prog = this.prog;
if (graph.__last_framestart < please.time.__framestart) {
// note, this.__last_framestart can be null, but
// null<positive_number will evaluate to true anyway.
graph.tick();
}
if (camera) {
graph.camera.update_camera();
@Aeva
Aeva / browser_architecture_draft.org
Last active November 20, 2016 06:54
High-Level Notes on a Fancy Browser Architecture

pitch

A web browser that provides reasonably privacy from common tracking employed by for-profit corporations.

A big inspiration is this blog post: https://theperplexingpariah.co.uk/my-firefox.html

Having used things like request block and self destructing cookies in firefox, I have some ideas for some simple changes to how the browser works that would aleviate a lot of the usability problems that those

@Aeva
Aeva / web_audio_api_experiment.js
Created January 18, 2017 06:46
Web Audio API Experiment
function LerpNode(ctx) {
"strict";
var node = {
"lhs" : ctx.createGain(),
"rhs" : ctx.createGain(),
"__alpha" : 0.5,
};
node.alpha = Object.create(AudioParam.prototype, {
@Aeva
Aeva / shader_conlanging.org
Last active March 31, 2017 16:53
scheme shader dsl mockup

This is a mockup for a scheme shader DSL. The main idea here is to conceptualize shaders as being a dependency resolution problem instead of a mess of procedural code. So instead, we define some named data structures. These structures can name other structures as “dependencies”. Data members follow the form of a name, an optional value, and zero or more tags to specify type. Type is optional, but if the struct is under-specified, evaluating it will throw an error.

The variant macro can be used to provide polymorphism (maybe the macro should just be “polymorph”).

Lastly, the vertex and fragment shader macros can take any number of structs as dependencies, but in this case, they only need “model”. The rest will be pulled in automatically.

This lets us do a number of things:

  1. C structs and helper APIs can be easily generated automatically from the struct and variant macros.
(use-modules (srfi srfi-1))
(define (camera-layout)
'((matrix #:mat4)))
(define (camera property)
(find (lambda (record) (eq? (car record) property)) (camera-layout)))
(define (model-layout)
'((position #:vec3 #:vertex)