twigl.app is an online editor for One tweet shader, with GIF generator, sound shader, and broadcast live coding.
Today I tested this online shader editor , my hardware is not very good and browser is low, but works ...

2D, 3D, game, games, online game, game development, game engine, programming, OpenGL, Open AI, math, graphics, design, graphic, graphics, game development, game engine, programming, web development, web art, web graphic, arts, tutorial, tutorials,
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
uniform vec2 resolution;
uniform float time;
uniform vec4 mouse;
uniform vec4 date;
//#define time iTime
#define R resolution.xy
void mainImage( out vec4 fragC, in vec2 fC)
{
vec2 pos = (fC.xy/R.xy) * 8. - 4.;
pos.x *= R.x / R.y;
float s = .26, f = 10.0, k = f;
vec3 p = vec3(pos, sin(time ) * .15)* s;
for( int i=0; i< 5; i++ )
{
p = (abs(p)/dot(p,p) - 1.33);
k = length(p);
p = 0.95*s/(p*k-p)*k;
}
f = (dot(dot(p,p),0.9*s)/(s/dot(p,p)));
fragC= vec4(f, f *1.2, f * 9.1, 1.0);;
}
void main() {
vec4 fragment_color;
mainImage(fragment_color, gl_FragCoord.xy);
gl_FragColor = fragment_color;
}
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
#define _ParticlesAmount 10
uniform vec2 resolution;
uniform float time;
float rnd(float x)
{
return fract(sin(dot(vec2(x + 47.49,38.2467 / (x + 2.3)), vec2(12.9898, 78.233))) * (43758.5453));
}
float draw_leaf(vec2 uv, float scale, float d) {
float ret;
vec2 root = uv - vec2(1.0, scale);
float r = length(root) / scale;
float t = abs(atan(root.x, root.y) / 3.1415);
float edge = (3.0 * t - 8.0 * t*t*t*t + 6.0 * t*t*t*t*t) / (4.0 - 3.0 * t);
ret = smoothstep(edge - d, edge + d, r);
return ret;
}
mat2 rotate(float t) {
return mat2(cos(t), -sin(t), sin(t), cos(t));
}
float drawClover(vec2 uv, float scale, float d) {
float ret = draw_leaf(uv, scale, d);
uv = rotate(2.0) * uv;
ret *= draw_leaf(uv, scale, d);
return 1.0 - ret;
}
vec4 alphaBlend(vec4 base, vec4 blend)
{
return vec4(base.rgb * base.a * (1.0 - blend.a) + blend.rgb * blend.a, blend.a + base.a * (1.0 - blend.a));
}
// conversion from a web shadertoy
//void mainImage( out vec4 fragColor, in vec2 fragCoord )
void main() {
{
vec2 uv = (2.0 * gl_FragCoord.xy - resolution.xy) / min(resolution.x, resolution.y);
float t = smoothstep(1.5, 0.0, length(uv));
gl_FragColor = vec4(t * vec3(1, 0.8784, 0.9333) + (1.0 - t) * vec3(0.9568, 0.7451, 0.8118), 1.0);
float j;
float move_max = 1.0;
vec2 spawn_center = vec2(0.0, 0.0);
float spawn_length = 0.5;
float _ParticlesAmount_f = float(_ParticlesAmount);
for (int i = 1; i < _ParticlesAmount; i++)
{
j = float(i);
float rnd1 = rnd(cos(j));
float delayedTime = (0.2 + 0.2 * rnd1) * time;
float d = floor(delayedTime / move_max);
float rnd2 = rnd(j * d);
float rnd3 = rnd(j * j * d);
float r = delayedTime / move_max - d;
float x_wave = 0.15 * sin(delayedTime * 7.0 + 6.282 / j);
vec2 spawn = vec2(0.0, rnd3 * spawn_length);
float ease = pow(2.0, 5.0 * (r - 1.0));
float y_move = move_max * ease;
float opacity = 1.0 - ease - pow(2.0, -30.0 * r);
float scale = 1.0 - 0.65 * rnd1 + 0.15 * sin(1.8 * time * j / _ParticlesAmount_f + 6.282 / j);
float rot_wave = 2.0 * sin(delayedTime * 3.0 * j / _ParticlesAmount_f * 2.0 + 6.282 / j);
vec2 center = rotate(rot_wave) * (rotate(6.282 * rnd2) * (uv + spawn_center) + spawn + vec2(x_wave, y_move)) * scale;
vec3 cloverColor = vec3(0.3 + 0.3 * rnd2, 0.98, 0.3) * (1.0 - 0.3 * rnd3);
vec3 cloverCenterColor = cloverColor + (vec3(1.0) - cloverColor) * 0.5;
vec3 cloverBgColor = vec3(1.0, 0.98, 0.7);
gl_FragColor = alphaBlend(gl_FragColor, vec4(cloverBgColor, opacity * drawClover(center, 0.1, 0.3)));
gl_FragColor = alphaBlend(gl_FragColor, vec4(cloverColor, opacity * drawClover(center, 0.1, 0.01)));
gl_FragColor = alphaBlend(gl_FragColor, vec4(cloverCenterColor, opacity * drawClover(center, 0.05, 0.3)));
}
}
}
Shader error in '': Parse error: syntax error, unexpected TVAL_ID
Shader error in '': Parse error: syntax error, unexpected TVAL_ID at line 15
#pragma shader_feature_local OutCode001
float DataInput_float( in float4 _in11, in float x , out float4 _out11)
{
//_in11 = _input11Float;
_in11 = _in11;
_out11 = sin(_in11) * ( x * 1000 );
return _out11;
}
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
//Shader "Custom/CG_RGB"
//{
// Properties
// {
// _Color ("Color", Color) = (1,1,1,1)
// _MainTex ("Albedo (RGB)", 2D) = "white" {}
// _Glossiness ("Smoothness", Range(0,1)) = 0.5
// _Metallic ("Metallic", Range(0,1)) = 0.0
// }
// SubShader
// {
// Tags { "RenderType"="Opaque" }
// LOD 200
// CGPROGRAM
// // Physically based Standard lighting model, and enable shadows on all light types
// #pragma surface surf Standard fullforwardshadows
// // Use shader model 3.0 target, to get nicer looking lighting
// #pragma target 3.0
// sampler2D _MainTex;
// struct Input
// {
// float2 uv_MainTex;
// };
// half _Glossiness;
// half _Metallic;
// fixed4 _Color;
// // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// // #pragma instancing_options assumeuniformscaling
// UNITY_INSTANCING_BUFFER_START(Props)
// // put more per-instance properties here
// UNITY_INSTANCING_BUFFER_END(Props)
// void surf (Input IN, inout SurfaceOutputStandard o)
// {
// // Albedo comes from a texture tinted by color
// fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
// o.Albedo = c.rgb;
// // Metallic and smoothness come from slider variables
// o.Metallic = _Metallic;
// o.Smoothness = _Glossiness;
// o.Alpha = c.a;
// }
// ENDCG
// }
// FallBack "Diffuse"
//}
Shader "Cg shader for RGB cube" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert // vert function is the vertex shader
#pragma fragment frag // frag function is the fragment shader
void vert(float4 vertexPos : POSITION,
out float4 pos : SV_POSITION,
out float4 col : TEXCOORD0)
{
pos = UnityObjectToClipPos(vertexPos);
col = vertexPos + float4(0.5, 0.5, 0.5, 0.0);
return;
}
float4 frag(float4 pos : SV_POSITION,
float4 col : TEXCOORD0) : COLOR
{
return col;
}
ENDCG
}
}
}
// file for custom node shader function
static float _input1Float = 1;
static float _input2Float = 1;
void Data_float(out float _in1, out float _in2)
{
_in1 = _input1Float;
_in2 = _input2Float;
}
Shader "Cg basic shader" { // this is the name of the shader
SubShader { // Unity chooses this like an subshader and works with your GPU specifications
Pass { // passes in higher-level shader/material systems GLSL/Cg/HLSL is a way of setting up states necessary for multi-pass rendering, in this case is one pass
CGPROGRAM // start programming with Unity's Cg
#pragma vertex vert
// this specifies the vert function as the vertex shader
#pragma fragment frag
// this specifies the frag function as the fragment shader
// define vert for vertex shader
float4 vert(float4 vertexPos : POSITION) : SV_POSITION
// vertex shader
{
return UnityObjectToClipPos(vertexPos);
// this line transforms the vertex input parameter
// and returns it as a nameless vertex output parameter
// (with semantic SV_POSITION)
}
// define frag for fragment shader
float4 frag(void) : COLOR // fragment shader
{
return float4(0.0, 1.9, 7.6, 1.0);
// this fragment shader returns a nameless fragment
// output parameter (with semantic COLOR) that is set to
// opaque red (red = 1, green = 0, blue = 0, alpha = 1)
}
ENDCG // ends the part in programming with Unity's Cg
}
}
}