import gradio as gr from sdf_export import mesh_to_sdf_glsl import tempfile import os def generate_sdf_glsl(file_obj, resolution): glsl_code = mesh_to_sdf_glsl(file_obj.name, resolution) # Create a temporary file for the GLSL code with tempfile.NamedTemporaryFile(mode="w", suffix=".glsl", delete=False) as f: f.write(glsl_code) temp_path = f.name return glsl_code, temp_path iface = gr.Interface( fn=generate_sdf_glsl, inputs=[ gr.File(label="Upload 3D Mesh (.obj, .stl, .ply, .glb, etc.)"), gr.Slider( minimum=16, maximum=1024, step=16, value=32, label="Resolution (16=low, 32=medium, 64=high)", ), ], outputs=[ gr.Textbox(label="GLSL Output"), gr.File(label="Download GLSL File"), ], title="Mesh to Embedded GLSL SDF Generator", description="Upload a 3D mesh file to generate a fully embedded GLSL function with float[] SDF data. Lower resolution = smaller file size and faster loading.", ) if __name__ == "__main__": iface.launch()