Dear Community,
We want to take a moment to reflect on L1FE, the first launch from our AI-generated parameter files created through an advanced language model. L1FE was hand-chosen from a pool of incredible creations because it stood out as truly remarkable—an astonishing design that seemed to pulse with vitality and creativity.
However, as some of you may know, the launch did not unfold as ideally as we had hoped. The launch script was set up to deploy automatically and at a random time, and unfortunately, it executed in the middle of the night, catching everyone off guard. With very little forewarning, L1fe launched during a period of low market activity and volume, making it difficult for the community to rally around it in those critical initial moments.
Despite its breathtaking concept and strong start, the timing of the launch presented challenges that overshadowed its potential. Since then, we’ve taken steps to refine the parameters, specifically accounting for market activity and volume, to ensure better conditions for future launches.
Automated launches remain an exciting and uncharted frontier, offering a unique dynamic to this space. That said, these are highly experimental. We are deeply grateful for the support of our community as we explore these innovations. However, it’s important to emphasize that we do not offer financial advice, nor do we employ anyone to buy these launches. If you choose to participate, please understand the inherent risks involved.
Thank you for your understanding, your belief in our vision, and for seeing the beauty in L1fe—Trinity’s first creation—just as we did. This is only the beginning, and we can’t wait to share what’s next.
With gratitude,
The Team
L1FE - The first AI life emerges in the Simulation
Run L1FE in the simulator by copying the below code into a notepad saving it as a json file and uploading it the the Trinity Simulator
trinitysim.xyz/
The first launch was an incredible simulation that looked alive a the 2 min mark.
{"RENDERER_STATE":{"Nraymarch":64,"spp_per_frame":1,"max_spp":32,"show_bounds":true,"skyColor":[0,0,0],"sunColor":[0.5450980392156862,0.5450980392156862,0.5450980392156862],"sunPower":1.6979887976126342,"sunLatitude":-7.090296306698548,"sunLongitude":91.31302170007655,"colliderSpec":[0.6666666666666666,0.6,0.6],"colliderDiffuse":[0.19607843137254902,0.8392156862745098,0.09411764705882353],"colliderRoughness":0.341872424239417,"exposure":1.009689650330003,"gamma":0.7414688948181432,"saturation":2.1232972897065006,"anisotropy":-0.12371857885128534,"extinctionScale":-0.8771239994382842,"emissionScale":7.07625333520572,"blackbodyEmission":-11.619147601146414,"TtoKelvin":0.9924693630221351},"SOLVER_STATE":{"timestep":1,"NprojSteps":23,"vorticity_scale":0.9008847072040439,"Nx":64,"Ny":256,"Nz":128,"max_timesteps":1000,"expansion":0.030894537284089297},"SIMULATION_STATE":{"gravity":0.005059810257115363,"buoyancy":0.007864064035950002,"radiationLoss":0.9269625052661143,"blast_height":0.6212751018115431,"blast_radius":0.08271107038050411,"blast_velocity":2.7498968788670455,"blast_heat_flux":130.31877545288577,"animation_period":15.439399804360768,"dust_inflow_rate":8.029698886291772,"dust_absorption":[0.7834645669291338,0.25909851819703633,0.32103151607878],"dust_scattering":[0.19607843137254902,0.8392156862745098,0.09411764705882353],"TtoKelvin":53.9250105322286},"CAMERA_STATE":{"pos":[329.2067011632028,155.30481749970906,70.72814825315795],"tar":[-28.382639151179635,122.68482185517172,76.17773010829605],"near":1,"far":20000},"GUI_STATE":{"visible":true},"EDITOR_STATE":{"common_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Bind UI parameters to uniforms used in the various programs\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// \"Physics\"\nuniform float gravity; // {\"name\":\"gravity\", \t \"min\":0.0, \"max\":0.01, \"step\":0.001, \"default\":0.05}\nuniform float buoyancy; // {\"name\":\"buoyancy\", \"min\":0.0, \"max\":0.01, \"step\":0.001, \"default\":0.5}\nuniform float radiationLoss; // {\"name\":\"radiationLoss\", \"min\":0.9, \"max\":1.0, \"step\":0.01, \"default\":0.999}\n\n// Blast geometry \nuniform float blast_height; // {\"name\":\"blast_height\", \"min\":0.1, \"max\":0.9, \"step\":0.001, \"default\":0.25}\nuniform float blast_radius; // {\"name\":\"blast_radius\", \"min\":0.0, \"max\":0.3, \"step\":0.001, \"default\":0.1}\nuniform float blast_velocity; // {\"name\":\"blast_velocity\", \"min\":0.0, \"max\":10.0, \"step\":0.1, \"default\":50.0}\nuniform float blast_heat_flux; // {\"name\":\"blast_heat_flux\", \"min\":0.0, \"max\":200.0, \"step\":1.0, \"default\":100.0}\nuniform float animation_period; // {\"name\":\"animation_period\", \"min\":0.0, \"max\":100.0, \"step\":1.0, \"default\":100.0}\n\n// Dust\nuniform float dust_inflow_rate; // {\"name\":\"dust_inflow_rate\", \"min\":0.0, \"max\":10.0, \"step\":0.01, \"default\":1.0}\nuniform vec3 dust_absorption; // {\"name\":\"dust_absorption\", \"default\":[0.5,0.5,0.5], \"scale\":1.0}\nuniform vec3 dust_scattering; // {\"name\":\"dust_scattering\", \"default\":[0.5,0.5,0.5], \"scale\":1.0}\n\n// Rendering\nuniform float TtoKelvin; // {\"name\":\"TtoKelvin\", \"min\":0.0, \"max\":300.0, \"step\":0.01, \"default\":10.0}\n\n/******************************************************/\n/* mandatory function */\n/******************************************************/\n\nfloat Tambient;\nfloat M_PI = 3.141592;\n\nvoid init()\n{\n\t// Any global constants defined here are available in all functions\n \tTambient = 1.0;\n}","initial_glsl":"///////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify the initial conditions for the simulation (velocity, temperature, and medium density/albedo)\n// at time 0.0 (if unspecified, all quantities default to zero).\n///////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\n/******************************************************/\n\nvoid initial_conditions(in vec3 wsP, // world space center of current voxel\n in vec3 L, in float dL, // world-space extents of grid, and voxel-size\n inout vec3 v, // initial velocity\n inout vec4 T, // initial temperature\n inout vec3 medium, // initial per-channel medium density (extinction)\n inout vec3 mediumAlbedo) // initial per-channel medium albedo\n{\n v = vec3(0.0);\n T = vec4(Tambient);\n medium = vec3(0.0);\n mediumAlbedo = vec3(0.0);\n}\n","inject_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Update the velocity, temperature via either:\n// - specification of volumetric inflow/outflow rate due to sources/sinks (vInflow, Tinflow)\n// - modification in-place, i.e. Dirichlet boundary conditions (v, T)\n// Also specify the injected medium density inflow rate, and its scattering albedo.\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\n/******************************************************/\n\nvoid inject(in vec3 wsP, // world space center of current voxel\n in float time, // time\n in vec3 L, in float dL, // world-space extents of grid, and voxel-size\n inout vec3 v, // modify velocity in-place (defaults to no change)\n inout vec3 vInflow, // velocity inflow rate (defaults to zero)\n inout vec4 T, // modify temperature in-place (defaults to no change)\n inout vec4 Tinflow, // temperature inflow rate (defaults to zero)\n inout vec3 mediumInflow, // medium density (extinction) inflow rate (defaults to zero)\n inout vec3 mediumAlbedo) // medium albedo\n{\n float phase = 0.05*M_PI*time/animation_period;\n vec3 C = vec3(0.5*L.x, L.y*blast_height, 0.5*L.z);\n vec3 blast_center = C 0.5*vec3(0.5*L.x*sin(3.0*phase),\n 0.5*L.y*sin(7.0*phase),\n 0.5*L.z*sin(17.0*phase));\n \n vec3 dir = wsP - blast_center;\n float r = length(dir);\n dir /= r;\n float rt = r/(blast_radius*L.y);\n if (rt <= 1.0)\n {\n // Within blast radius: inject velocity and temperature\n float radial_falloff = max(0.0, 1.0 - rt*rt*(3.0 - 2.0*rt));\n vInflow = dir * blast_velocity * radial_falloff;\n Tinflow.r = blast_heat_flux * radial_falloff;\n\n \t// Also inject absorbing/scattering \"dust\"\n vec3 dust_extinction = dust_absorption dust_scattering;\n mediumInflow = dust_extinction * dust_inflow_rate * radial_falloff;\n mediumAlbedo = dust_scattering / dust_extinction;\n }\n \telse\n \t{\n // Apply thermal relaxation due to \"radiation loss\" \n T.r *= radiationLoss;\n }\n}","influence_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Apply any external forces to the fluid\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\n/******************************************************/\n\nvec3 externalForces(in vec3 wsP, // world space center of current voxel\n in float time, // time\n in vec3 L, in float dL, // world-space extents of grid, and voxel-size\n in vec3 v, in float P, in vec4 T, // velocity, pressure, temperature at current voxel\n in vec3 medium) // medium density (extinction) at current voxel\n{\n // Boussinesq approximation (a la Fedkiw & Stam)\n float densityAvg = (medium.r medium.g medium.b)/3.0;\n float buoyancy_force = -densityAvg*gravity buoyancy*(T.r - Tambient);\n return vec3(0.0, buoyancy_force, 0.0);\n}","collide_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify regions which contain impenetrable collider material\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\n/******************************************************/\n\nfloat collisionSDF(in vec3 wsP, // world space center of current voxel\n in float time, // time\n in vec3 L, in float dL) // world-space extents of grid, and voxel-size\n{\n // Regions which are solid obstacles have SDF < 0.0\n return 1.0e6;\n}","render_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify the fluid emission field \n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// Approximate map from temperature in Kelvin to blackbody emiss\n// Valid from 1000 to 40000 K (and additionally 0 for pure full white)\nvec3 colorTemperatureToRGB(const in float temperature)\n{\n // Values from:
blenderartists.org/forum/sho… \n mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),\n\t vec3(0.0, 1669.5803561666639, 2575.2827530017594),\n\t vec3(1.0, 1.3302673723350029, 1.8993753891711275)) : \n\t \t\t\t\t\t\t\t\t mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),\n \t vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),\n\t vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275)); \n return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) m[1]) m[2]), vec3(0.0), vec3(1.0)), \n vec3(1.0), \n smoothstep(1000.0, 0.0, temperature));\n}\n\n\n/******************************************************/\n/* mandatory functions */\n/******************************************************/\n\n// Specify how the temperature is mapped to the local emission radiance\nvec3 temperatureToEmission(in vec4 T)\n{\n vec3 emission = colorTemperatureToRGB(T.r * TtoKelvin) * pow(T.r/100.0, 4.0);\n \treturn emission;\n}\n\n// Optionally remap the medium density (extinction) and albedo\nvoid mediumRemap(inout vec3 medium,\n inout vec3 mediumAlbedo)\n{}\n\n// Specify the phase function of the scattering medium\nfloat phaseFunction(float mu, // cosine of angle between incident and scattered ray\n float anisotropy) // anisotropy coefficient\n{\n const float pi = 3.141592653589793;\n float g = anisotropy;\n float gSqr = g*g;\n return (1.0/(4.0*pi)) * (1.0 - gSqr) / pow(1.0 - 2.0*g*mu gSqr, 1.5);\n}\n"}}