{"id":13784687,"url":"https://github.com/leon196/ShaderGum","last_synced_at":"2025-05-11T20:31:09.336Z","repository":{"id":149159973,"uuid":"95832719","full_name":"leon196/ShaderGum","owner":"leon196","description":"Unity3D GPU Sculpt \u0026 Morph","archived":false,"fork":false,"pushed_at":"2017-06-30T03:06:53.000Z","size":38019,"stargazers_count":152,"open_issues_count":1,"forks_count":18,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-11-17T21:39:08.198Z","etag":null,"topics":["gpu","shader","shaders","unity3d"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leon196.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-06-30T00:48:51.000Z","updated_at":"2024-05-14T08:10:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"881437da-e960-4aee-8d1d-b31bf9950965","html_url":"https://github.com/leon196/ShaderGum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leon196%2FShaderGum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leon196%2FShaderGum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leon196%2FShaderGum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leon196%2FShaderGum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leon196","download_url":"https://codeload.github.com/leon196/ShaderGum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253631924,"owners_count":21939368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpu","shader","shaders","unity3d"],"created_at":"2024-08-03T19:00:51.024Z","updated_at":"2025-05-11T20:31:06.576Z","avatar_url":"https://github.com/leon196.png","language":"C#","readme":"# ShaderGum\nUnity3D GPU Sculpt \u0026amp; Morph.  \n\n\u003cimg src='pics/33.gif'/\u003e\n\n## 3D models and textures by Tipatat Chennavasin  \nIt is 3D scan of wax figures from Madame Tussauds in Hollywood, Ca  \nBruce Lee by tipatat is licensed under CC Attribution  \nMarylin Monroe by tipatat is licensed under CC Attribution  \n[Tipatat's models on Skecthfab](https://sketchfab.com/tipatat)  \n\n## Description\nThis is a Unity3D project with a set of scripts and shaders that manipulate vertex positions with textures and filters.  \nVertices from the mesh is listed and stored in a texture.  \nA shader is processing position as a color: red, green and blue become x, y and z.  \nA frame buffer is used to create persistence, to store a virtual space.  \nThe mesh uses a shader that gives the vertex positions from the generated texture.\n\n\u003cimg src='pics/29b.gif'/\u003e\n\n## Experiment\nThis project was a good challenge to learn about processing float textures:  \nHow to map a vertex index to a texture coordinates.  \nHow to retrieve position from a texture.  \nHow to change the stored position with an image filter.  \n\nWith these features, you can imagine wonderful things, like animating blend shapes with textures.  \n[This article on Gamasutra](http://www.gamasutra.com/blogs/TequilaWorks/20160620/275347/How_to_take_advantage_of_textures_in_the_vertex_shader.php)  by Tequila Works about this subject is great read, and is basically what gave me ideas.  \nThe key to store in a texture a float value that is beyond the color space (0..1) is the texture format.  \nIn Unity3D you have to create a [ARGBFloat render texture.](https://docs.unity3d.com/ScriptReference/RenderTextureFormat.ARGBFloat.html)\n\n\u003cimg src='pics/30.gif' /\u003e\n\n## Examples of applications\n(Not in the current project, because too hacky lines of code)   \n\nBlending textures to animate smoothly vertices.  \n\u003cimg src='pics/31.gif' height=300px/\u003e  \n\nImplementation of Blender3D modeling soft selection trackball.  \n\u003cimg src='pics/32.gif' height=300px/\u003e\n\n## Texture of vertex positions  \n\nRaw texture.  \n\u003cimg src='pics/43.PNG' height=300px /\u003e  \n\nSame but with absolute digits.  \n\u003cimg src='pics/44.PNG' height=300px /\u003e  \n\nLittle elves moving color pigment to pixel places.  \n\u003cimg src='pics/28.gif' height=300px/\u003e  \n(the green flash feels natural but it is because of gif compression)  \n\n### Leon - 30 / 06 / 2017 - GNU GPL 3 - Bisous\n","funding_links":[],"categories":["Other Shaders"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleon196%2FShaderGum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleon196%2FShaderGum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleon196%2FShaderGum/lists"}