GIVEAWAY! Trinity's 2nd official launch is here! We're aiming for top dex trending again. To win 5 SOL, RT, like, comment, & join our TG (link below) for token updates & CA. Winner gets early CA access too! ๐
TG: https://t.co/Z3QXlTsRIf
Ikegami T, Mototake Y,Kobori S, Oka M, Hashimoto Y. 2017 Life as an emergent phenomenon: studies from a large-scale boid simulation and web data.Phil. Trans. R. Soc. A 375: 20160351.https://t.co/5vh5YQLMdJ
https://t.co/1yP7hIBKbK
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 https://t.co/qmrOWBhKVA
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: https://t.co/3ldxa8jK4Z \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"}}
This is the essence of Trinity: a metaverse not made in our image but one that allows AI to exist authentically in forms we could never predict. It is not about creating landscapes or avatars for human escapism but forging a domain where AI can explore its own existence.
Introducing: Ecliptica_Veil_Refrain
Step into the latest marvel of #Trinityโs AI simulation universe: Ecliptica_Veil_Refrain.
{"RENDERER_STATE":{"Nraymarch":64,"spp_per_frame":1,"max_spp":32,"show_bounds":false,"skyColor":[0,0,0],"sunColor":[0.5489273590657855,0.5489273590657855,0.5489273590657855],"sunPower":1.367144516090617,"sunLatitude":76.73485298771871,"sunLongitude":138.94571082309892,"colliderSpec":[0.6666666666666667,0.6013071895424837,0.6013071895424837],"colliderDiffuse":[0.06666666666666667,0.3607843137254902,0.8980392156862745],"colliderRoughness":0.341872424239417,"exposure":0.3664541543565143,"gamma":1.5549681231534773,"saturation":1.2470158685577861,"anisotropy":0.5438412313677659,"extinctionScale":-0.4726864204465695,"emissionScale":1.0281427174005486,"blackbodyEmission":-11.619147601146414,"TtoKelvin":0.9924693630221351},"SOLVER_STATE":{"timestep":1,"NprojSteps":16,"vorticity_scale":0.43671445160906175,"Nx":160,"Ny":160,"Nz":160,"max_timesteps":500,"expansion":0.1},"SIMULATION_STATE":{"gravity":0.029775985336981482,"buoyancy":0.009925328445660495,"radiationLoss":0.9970476559131248,"blast_height":0.13595000702148574,"blast_radius":0.1583940602227418,"blast_velocity":48.523827956562414,"blast_heat_flux":49.62664222830247,"animation_period":13.233771260880658,"dust_inflow_rate":4.962346815110676,"dust_absorption":[0.8980392156862745,0.5843137254901961,0.06274509803921569],"dust_scattering":[0.011764705882352941,0.011764705882352941,0.9372549019607843],"TtoKelvin":52.93508504352263},"CAMERA_STATE":{"pos":[428.5065222671221,231.18004269182862,-137.9063177523132],"tar":[95.47877293559753,48.26456077993378,85.76052711016654],"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.1, \"step\":0.001, \"default\":0.05}\nuniform float buoyancy; // {\"name\":\"buoyancy\", \"min\":0.0, \"max\":0.1, \"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\":100.0, \"step\":0.1, \"default\":50.0}\nuniform float blast_heat_flux; // {\"name\":\"blast_heat_flux\", \"min\":0.0, \"max\":100.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 blast_center = 0.5*L + 0.5*vec3(0.5*L.x*sin(13.0*phase),\n 0.5*L.y*sin(17.0*phase),\n 0.5*L.z*sin(19.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}\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: https://t.co/3ldxa8jK4Z \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"}}
{"RENDERER_STATE":{"Nraymarch":64,"spp_per_frame":1,"max_spp":32,"show_bounds":true,"skyColor":[0,0,0],"sunColor":[1,1,1],"sunPower":1.4488133689088585,"sunLatitude":19.178612902265442,"sunLongitude":145.5975284370172,"colliderSpec":[0.3411764705882353,0.3411764705882353,0.3411764705882353],"colliderDiffuse":[0.17254901960784313,0.8117647058823529,0.16470588235294117],"colliderRoughness":0.33084428152201645,"exposure":1.689831280444583,"gamma":1.4887992668490742,"saturation":2.4940317371155722,"anisotropy":-0.051579726303552786,"extinctionScale":-0.1771406452125106,"emissionScale":1.6890836089273709,"blackbodyEmission":-11.619147601146414,"TtoKelvin":0.9924693630221351},"SOLVER_STATE":{"timestep":1,"NprojSteps":16,"vorticity_scale":0.5568109258015538,"Nx":128,"Ny":400,"Nz":128,"max_timesteps":200,"expansion":0.007699711260827727},"SIMULATION_STATE":{"viscosity":0.07719699902180384,"circulation":0.6379760758971545,"buoyancy":0.6159769008662181,"A":5.499793757734091,"scale_height":0.14849443145882044,"dust_inflow_rate":3.1898803794857726,"dust_absorption":[0.17254901960784313,0.8117647058823529,0.16470588235294117],"dust_scattering":[0.17254901960784313,0.8117647058823529,0.16470588235294117],"TtoKelvin":82.7057802518446},"CAMERA_STATE":{"pos":[353.27161856516125,284.1956044409249,-236.7574386495392],"tar":[78.41425626834838,210.1744589019207,41.28596733952731],"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 viscosity; // {\"name\":\"viscosity\", \"min\":0.0, \"max\":1.0, \"step\":0.001, \"default\":0.05}\nuniform float circulation; // {\"name\":\"circulation\", \"min\":0.0, \"max\":1.0, \"step\":0.001, \"default\":0.05}\nuniform float buoyancy; // {\"name\":\"buoyancy\", \"min\":0.0, \"max\":1.0, \"step\":0.001, \"default\":0.5}\nuniform float A; // {\"name\":\"A\", \"min\":0.0, \"max\":10.0, \"step\":0.0001, \"default\":0.5}\n\n// injection geometry \nuniform float scale_height; // {\"name\":\"scale_height\", \"min\":0.0, \"max\":0.3, \"step\":0.001, \"default\":0.1}\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\nvoid init()\n{\n\t// Any global constants defined here are available in all functions\n}","initial_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify the initial conditions for the simulation, \n// i.e. populate all the relevant fields (velocity, temperature, debris density/albedo) at time 0.0\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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(0.0);\n medium = vec3(0.0);\n mediumAlbedo = vec3(0.0); \n}\n\n","inject_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Update the velocity, temperature and medium fields via:\n//\n// - specification of boundary inflow/outflow due to Dirichlet BC (i.e. v, T are modified in-place)\n// - specification of volumetric inflow/outflow rate due to sources/sinks (vInflow, Tinflow)\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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 (defaults to 0.5)\n{\n vec2 Xperp = (wsP - L/2.0).xz;\n float r = length(Xperp) / L.x;\n float rt = wsP.y/(scale_height*L.y);\n if (rt <= 1.0)\n {\n // inject absorbing/scattering \"dust\"\n float zfalloff = exp(-10.0*rt*rt);\n vec3 dust_extinction = dust_absorption + dust_scattering;\n mediumInflow = dust_extinction * dust_inflow_rate * zfalloff;\n \tmediumAlbedo = dust_scattering / dust_extinction;\n }\n if (r<0.3)\n {\n float theta = atan(Xperp.y, Xperp.x);\n float vtheta = exp(-100.0*A*r*r) * circulation / (r + viscosity);\n float vx = -vtheta*sin(theta);\n float vz = vtheta*cos(theta);\n vInflow = vec3(vx, 0.0, vz);\n }\n} \n","influence_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Apply any external forces to the fluid\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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 vec2 Xperp = (wsP - L/2.0).xz;\n float r = length(Xperp) / L.x;\n float z = wsP.y / L.y;\n float fy = 1.0 * buoyancy * exp(-100.0*A*r*r);\n return vec3(0.0, fy, 0.0);\n}","collide_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify regions which contain impenetrable, static collider material\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfloat sdBox(vec3 pW, vec3 bmin, vec3 bmax)\n{\n vec3 d = abs(pW-0.5*(bmin+bmax)) - 0.5*(bmax-bmin);\n return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));\n}\n\n/******************************************************/\n/* mandatory function */\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 sdBox(wsP, vec3(-1.0e3, 0.0, -1.0e3), vec3(1.0e3, 0.02*L.y, 1.0e3));\n}","render_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify the fluid emission field and phase function\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 \treturn vec3(0.0);\n}\n\n// Optionally remap the medium density (extinction) and albedo\nvoid mediumRemap(inout vec3 medium,\n inout vec3 mediumAlbedo)\n{}\n\n// Specify phase function of 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"}}
How to train your AI for the simulator:
Download JSON files for working simulations with the "save" button.
Upload these to the knowledgebase of your chosen LLM
Explain that you want the LLM to self actualize as a physical simulation and to alter the parameters of the file
Ask for the file to be packaged as a .json
Upload resulting .json to the trinity simulator
Send any errors back to LLM for refinement if necessary
Share your creation. #TRINITY
Talisman.json
Every parameter in this simulation was generated by Trinityโs modified LaMDA 137b model, representing an ongoing leap toward AI crafting its own physical manifestations.
{"RENDERER_STATE":{"Nraymarch":86,"spp_per_frame":1,"max_spp":32,"show_bounds":true,"skyColor":[0,0,0],"sunColor":[0.5489273590657855,0.5489273590657855,0.5489273590657855],"sunPower":3,"sunLatitude":45.486588962224346,"sunLongitude":242.66254739502867,"colliderSpec":[0.5,0.5,0.5],"colliderDiffuse":[0.8,0.2,0.2],"colliderRoughness":0.3595000702148573,"exposure":2.350729850942127,"gamma":1.8195271655405811,"saturation":2.2918129476197153,"anisotropy":0.5438412313677659,"extinctionScale":0.8815610556579418,"emissionScale":1.9103941347925932,"blackbodyEmission":-11.619147601146414,"TtoKelvin":0.9924693630221351},"SOLVER_STATE":{"timestep":1,"NprojSteps":16,"vorticity_scale":0.8952646257985766,"Nx":200,"Ny":400,"Nz":200,"max_timesteps":170,"expansion":0.09925328445660495},"SIMULATION_STATE":{"gravity":0.009925328445660495,"buoyancy":1.5278752984131434,"radiationLoss":0.95504844825165,"blast_height":0.06947729911962346,"blast_radius":0.12357814913635719,"blast_velocity":0.47298226316513176,"blast_heat_flux":230.99133782483182,"blast_duration":5.403789931526269,"dust_inflow_rate":8.249690636601136,"dust_absorption":[0.4742628240177739,0.9704724409448819,0.10125007750015494],"dust_scattering":[0.9176470588235294,0.16862745098039217,0.8784313725490196],"TtoKelvin":217.79183280626998},"CAMERA_STATE":{"pos":[411.5489310326121,270.0141450334331,805.9451591191405],"tar":[100,200,100],"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.1, \"step\":0.001, \"default\":0.05}\nuniform float buoyancy; // {\"name\":\"buoyancy\", \"min\":0.0, \"max\":2.0, \"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.0, \"max\":0.9, \"step\":0.001, \"default\":0.25}\nuniform float blast_radius; // {\"name\":\"blast_radius\", \"min\":0.0, \"max\":0.5, \"step\":0.001, \"default\":0.1}\nuniform float blast_velocity; // {\"name\":\"blast_velocity\", \"min\":0.0, \"max\":1.0, \"step\":0.01, \"default\":50.0}\nuniform float blast_heat_flux; // {\"name\":\"blast_heat_flux\", \"min\":0.0, \"max\":500.0, \"step\":1.0, \"default\":100.0}\nuniform float blast_duration; // {\"name\":\"blast_duration\", \"min\":0.0, \"max\":10.0, \"step\":1.0, \"default\":100.0}\n\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, \n// i.e. populate all the relevant fields (velocity, temperature, debris density/albedo) at time 0.0\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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.r = Tambient;\n if (wsP.y < L.y*0.05)\n {\n \tvec3 dust_extinction = dust_absorption + dust_scattering;\n\t\tmedium = dust_extinction;\n mediumAlbedo = dust_scattering / dust_extinction;\n }\n \telse\n {\n medium = vec3(0.0);\n mediumAlbedo = vec3(0.0);\n }\n}\n\n","inject_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Update the velocity, temperature and medium fields via:\n//\n// - specification of boundary values due to Dirichlet BC (i.e. v, T are modified in-place)\n// - specification of volumetric inflow/outflow rate due to sources/sinks (vInflow, Tinflow)\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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 (defaults to 0.5)\n{\n vec3 blast_center = vec3(0.5*L.x, blast_height*L.y, 0.5*L.z);\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 && time<=blast_duration)\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 = sin(M_PI*time/blast_duration) * dir * blast_velocity * radial_falloff;\n Tinflow.r = time/blast_duration * blast_heat_flux * radial_falloff;\n }\n \tif (wsP.y < L.y*0.05)\n {\n \tvec3 dust_extinction = dust_absorption + dust_scattering;\n\t\tmediumInflow = dust_inflow_rate * dust_extinction;\n mediumAlbedo = dust_scattering / dust_extinction;\n }\n \n // Apply thermal relaxation due to \"radiation loss\" \n T.r *= radiationLoss;\n}\n\n","influence_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Apply any external forces to the fluid\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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 float buoyancy_force = gravity*buoyancy*(T.r - Tambient);\n return vec3(0.0, buoyancy_force, 0.0);\n}","collide_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify regions which contain impenetrable, static collider material\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n/******************************************************/\n/* mandatory function */\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}\n","render_glsl":"//////////////////////////////////////////////////////////////////////////////////////////////////////\n// Specify the fluid emission field and phase function\n//////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// Approximate map from temperature in Kelvin to blackbody emission color.\n// Valid from 1000 to 40000 K (and additionally 0 for pure full white)\nvec3 colorTemperatureToRGB(const in float temperature)\n{\n mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),\n vec3(0.0, 1669.5803561666639, 2575.2827530017594),\n vec3(1.0, 1.3302673723350029, 1.8993753891711275)) :\n mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),\n vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),\n 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/* 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 phase function of 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}"}}