【Shader】用 Shader 画圆
来源:互联网 发布:域名投资的秘密 pdf 编辑:程序博客网 时间:2024/06/04 19:39
Shader "Custom/SimpleCircleShader" { Properties { _Parameters ("Circle Parameters" , Vector) = (0.5, 0.5, 60, 0) _CircleColor ("Circle Color", Color) = (0, 1, 1, 1) _BackgroundColor("Background Color", Color) = (1,1,1,1) } CGINCLUDE #include "UnityCG.cginc" #include "ShaderToyDefines.cginc" #pragma target 3.0 float4 _Parameters; float4 _CircleColor; float4 _BackgroundColor; struct v2f { float4 pos : SV_POSITION; float4 scrPos : TEXCOORD0; }; v2f vert(appdata_base v) { v2f o; o.pos = UnityObjectToClipPos (v.vertex); o.scrPos = ComputeScreenPos(o.pos); return o; } vec4 main(vec2 fragCoord); fixed4 frag(v2f _iParam) : COLOR0 { return main(gl_FragCoord); } vec4 circle(vec2 pos, vec2 center, float radius, float3 color, float antialias) { float d = length(pos - center) - radius; float t = smoothstep(0, antialias, d); return vec4(color, 1.0 - t); } vec4 main(vec2 fragCoord) { vec2 pos = fragCoord; vec4 layer1 = vec4(_BackgroundColor.rgb, 1.0); vec4 layer2 = circle(pos, _Parameters.xy * iResolution.xy, _Parameters.z, _CircleColor.rgb, _Parameters.w); return mix(layer1, layer2, layer2.a); } ENDCG SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest ENDCG } } FallBack Off}
头文件:
/* ------------------------ Shader Toy 着色器输入 -----------------------------------uniform vec3 iResolution; // viewport resolution (in pixels)uniform float iGlobalTime; // shader playback time (in seconds)uniform float iTimeDelta; // render time (in seconds)uniform int iFrame; // shader playback frameuniform float iChannelTime[4]; // channel playback time (in seconds)uniform vec3 iChannelResolution[4]; // channel resolution (in pixels)uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: clickuniform samplerXX iChannel0..3; // input channel. XX = 2D/Cubeuniform vec4 iDate; // (year, month, day, time in seconds)uniform float iSampleRate; // sound sample rate (i.e., 44100)-------------------------------------------------------------------------------------*/// 定义一系列宏和 Shader Toy 中的 GLSL 衔接#define vec2 float2#define vec3 float3#define vec4 float4#define mat2 float2x2#define mat3 float3x3#define mat4 float4x4#define iGlobalTime _Time.y#define mod fmod#define mix lerp#define fract frac#define texture2D tex2D#define iResolution _ScreenParams#define gl_FragCoord ((_iParam.scrPos.xy / _iParam.scrPos.w) * _ScreenParams.xy)#define PI2 6.28318530718#define pi 3.14159265358979#define halfpi (pi * 0.5)#define oneoverpi (1.0 / pi)
效果图:
阅读全文
0 0
- 【Shader】用 Shader 画圆
- shader
- shader
- shader
- Shader
- Shader
- shader
- shader
- shader
- Shader
- shader
- Shader
- shader
- Shader
- shader
- Shader
- Shader
- Shader
- echart2文档(简单明白)
- 我的小接口
- 5月15日云栖精选夜读:重要通知_|_比特币勒索席卷全球_如何防范?
- zynq开发-资料查询常用网址
- SpringMVC执行流程
- 【Shader】用 Shader 画圆
- Pytorch学习笔记(五)
- Python寻找路径和查找文件路径
- Android开发中一种两次点击返回键退出应用的方法
- Mutlisim和Proteus仿真
- python Flask中返回图片流给前端展示
- 为什么你有10年经验,但成不了专家?
- jQuery插件防冲突原理
- 心跳机制的作用