RIVEïå“ñÄæêîÐòÔ¶çëèììåÇéË­�@T‘Ë ShaderDemojÔñwidthheight gpuCanvascanvas BasicShadershader GPUPipelinenewvertexfragment vertexLayout colorTargetsformatpipelinecolorloadOpclearstoreOpstore clearColorbeginRenderPass setPipelinedrawfinish ImageSamplerclampbilinearimagesrcOver drawImageinit ‡+6bb  $€€6š É 5Ì 56b��7ái@$€€       ‡‡4=b&#b656 5   7¡7Dq ñ ´ ÿ b à@bÉÿÿÿÿà@! 6´´ÿÿÿÿÿÿÿÿ7 A@@´@ÊË BasicShaderjÔÏ2BTSR ŠŠ – ° ¼¿Âû ½ É ± z † ’3 Å vs_mainvs_mainfs_mainfs_main_struct VertexOutput { @builtin(position) position: vec4, @location(0) uv: vec2, } @vertex fn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput { var pos: array, 3> = array, 3>(vec2(-1f, -1f), vec2(3f, -1f), vec2(-1f, 3f)); var out: VertexOutput; let p = pos[vertexIndex]; out.position = vec4(p, 0f, 1f); out.uv = ((p * 0.5f) + vec2(0.5f, 0.5f)); let _e26 = out; return _e26; } @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4 { return vec4(in.uv.x, in.uv.y, 0.5f, 1f); }  vs_mainmain�#version 300 es precision highp float; precision highp int; struct VertexOutput { vec4 position; vec2 uv; }; smooth out vec2 _vs2fs_location0; void main() { uint vertexIndex = uint(gl_VertexID); vec2 pos[3] = vec2[3](vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0)); VertexOutput out_ = VertexOutput(vec4(0.0), vec2(0.0)); vec2 p = pos[vertexIndex]; out_.position = vec4(p, 0.0, 1.0); out_.uv = ((p * 0.5) + vec2(0.5, 0.5)); VertexOutput _e26 = out_; gl_Position = _e26.position; _vs2fs_location0 = _e26.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmaind#version 300 es precision highp float; precision highp int; struct VertexOutput { vec4 position; vec2 uv; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; void main() { VertexOutput in_ = VertexOutput(gl_FragCoord, _vs2fs_location0); _fs2p_location0 = vec4(in_.uv.x, in_.uv.y, 0.5, 1.0); return; }  vs_mainvs_mainfs_mainfs_mainÐ// language: metal1.0 #include #include using metal::uint; struct VertexOutput { metal::float4 position; metal::float2 uv; char _pad2[8]; }; struct type_3 { metal::float2 inner[3]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 position [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vertexIndex [[vertex_id]] ) { type_3 pos = type_3 {{metal::float2(-1.0, -1.0), metal::float2(3.0, -1.0), metal::float2(-1.0, 3.0)}}; VertexOutput out = {}; metal::float2 p = pos.inner[vertexIndex]; out.position = metal::float4(p, 0.0, 1.0); out.uv = (p * 0.5) + metal::float2(0.5, 0.5); VertexOutput _e26 = out; const auto _tmp = _e26; return vs_mainOutput { _tmp.position, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 position [[position]] ) { const VertexOutput in = { position, varyings_1.uv }; return fs_mainOutput { metal::float4(in.uv.x, in.uv.y, 0.5, 1.0) }; }  vs_mainmainÞstruct VertexOutput { float4 position; float2 uv; }; static const float2 _25[3] = { float2(-1.0f, -1.0f), float2(3.0f, -1.0f), float2(-1.0f, 3.0f) }; static const VertexOutput _34 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 uv; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 uv : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { VertexOutput _out = _34; _out.position = float4(_25[uint(gl_VertexIndex)], 0.0f, 1.0f); _out.uv = (_25[uint(gl_VertexIndex)] * 0.5f) + float2(0.5f, 0.5f); gl_Position = _out.position; uv = _out.uv; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.uv = uv; return stage_output; } fs_mainmainªstruct VertexOutput { float4 position; float2 uv; }; static float4 gl_FragCoord; static float2 uv; static float4 _18; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _18 : SV_Target0; }; void frag_main() { VertexOutput _11 = { gl_FragCoord, uv }; _18 = float4(_11.uv.x, _11.uv.y, 0.5f, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._18 = _18; return stage_output; }  HSLTvs_mainvs_mainfs_mainfs_main#F GLSL.std.450vs_main ?fs_main8;>?H#H#GG *G GG8 G;G>  +   ;  ; ;!+€¿,+@@,,,++€?+?,  !." $ '+)+- 1 9;98 <;<;;>6ø ;;! "= ù#ø#A$% =&%P(&A'* )>*(Ž+&�,+A$. ->.,=/ Q0/>0A12-=3243>24Q5/>5ý86?ø6=:8==;P7:=ù@ø@QA7QBAQC7QDCPEBD>>Eý8 ÊËShader 1jÔœBTSR _ p |U Ñ  Z// language: metal1.0 #include #include using metal::uint;  P# GLSL.std.450 �@+ȩî•öJšÛaËj†%×´ZT4༼Ç»V£P²-é0÷Y#Ÿ`‡ž‘'2“I�,â_"P^«8ôì³­ ViewModel1µ¶Instance  ‚ÄÃÄÈC–CîìÇMainÛ@À?Ð%(((ÿ¤åæçèéêëìñò(7 Timeline 157State Machine 19ŠLayer 1?A—=•@>