Escuché por ahí que las firmas se inventaron para la gente que no tenía palabra.
Me quedé con esa frase días. Si tu palabra valiera no necesitarías firmarla, y sin embargo firmamos todo: contratos y cuadros. La firma es parte de la esencia de alguien, su sello puesto a mano.
La grafología, por lo poco que sé, es pseudociencia. Pero uno intuye muchas cosas de la personalidad viendo la letra, la caligrafía. Hay trazos apurados y trazos que se frenan en las curvas. Algo dicen, aunque no sea ciencia.
Algunos practican su firma para que se vea cool, para que tenga que ver con quien la escribe. En el arte es un símbolo de reconocimiento: la firma de Dalí o la de Picasso se identifica a metros y vale dinero. Y el graffiti, al final, es una firma reclamando una pared.
Estas semanas aprendí bastante de firmar emails y de distribución: APIs de distribución de email y routing de dominios. Firmar un correo es la misma idea con criptografía, probar que algo viene de quien dice venir. La firma, en papel o en DNS, existe para dar autenticidad.
Quería experimentar llevando mi firma a la web, digitalizada. Obviamente no la real, esa no se publica: una firma/marca, un sello. Me pareció lo ideal para darle valor a esta publicación y plasmar aprendizaje. Y con esto cierro: mi firma en 3D.
cómo se escribe sola
Son cuatro trazos independientes, dibujados a mano, con la pluma levantada entre letra y letra. Cada trazo es un tubo con grosor que respira: arranca en 0.3, sube, tiembla un poco y se afina al final. Encima va un vidrio escrito en TSL con ior 1.45, dispersión de 0.02 y fresnel a la sexta. El vidrio no inventa lo que refracta: en cada frame se renderiza la escena sin vidrio en un pase limpio y después las caras traseras en otro, y la cara frontal muestrea esos dos. Cada trazo se apaga mientras su drawRange es cero, para no mandar draws vacíos al GPU.
El timeline que la escribe dura 2.95 segundos, con los trazos escalonados 0.1, y repite con 1.5 de pausa. En loop, para siempre.
el primer frame salió negro
La primera vez que monté la escena el hero quedó en negro y la consola decía:
[Texture "TransmissionBackdropClean"] usage (TextureBinding|RenderAttachment) includes writable usage and another usage in the same synchronization scope.
El nodo de textura nacía apuntando al pase limpio antes de que existiera el target de traseras, así que el primer pase sampleaba la textura que estaba escribiendo. WebGPU descartó el command buffer entero. El fix fue realinear el nodo en ensureResources antes de cualquier captura. Un bug de orden, de los que solo salen una vez y te dejan el canvas negro.
Arriba está, escribiéndose en loop. Si la ves moverse, el backdrop funcionó. Si lees esto en dev.to, la demo vive en gcex.dev.
La de verdad sigue en papel.