unity3d shader之Julia集和Mandelbrot集绘制美丽图案 (二)
2015-02-11 08:04
288 查看
之前写过一篇Mandelbrot集的代码在这里
这次主要写Julia集的
Mandelbrot 集内的每一个点都对应了一个连通的 Julia 集,Mandelbrot 集合外的点则对应了不连通的 Julia 集
Julia集合可以由下式进行反复迭代得到:f(z) = z^2 + c
这篇文章(www.matrix67.com/blog/archives/4570)讲的非常详细
迭代次数,C值均可调, 先来看看效果:
代码在此:
-----------------------by wolf96 http://blog.csdn.net/wolf96
这次主要写Julia集的
Mandelbrot 集内的每一个点都对应了一个连通的 Julia 集,Mandelbrot 集合外的点则对应了不连通的 Julia 集
Julia集合可以由下式进行反复迭代得到:f(z) = z^2 + c
这篇文章(www.matrix67.com/blog/archives/4570)讲的非常详细
迭代次数,C值均可调, 先来看看效果:
代码在此:
Shader "Custom/julia1x" { Properties { _MainTex ("Noise", 2D) = "white" {} _MaxIters("Max Iters", range(0,85)) = 1//迭代次数 _CR("CR", range(-1,1)) = -0.7//y的C _CI("CI", range(-1,1)) = -0.7//x的C _TS("TS", range(0,15)) = 1//x缩放 _CS("CS", range(0,15)) = 1//y缩放 _S0("S0", range(-3,3)) = 0.5//x偏移 _T0("T0", range(-3,3)) = 0.5//y偏移 _Limits("iLimits", range(0,19)) = 5 _ConColor("ConColor",color)=(1,1,1,1) _DivColor1("Diverge Color1",color)=(1,1,1,1) _DivColor2("Diverge Color2",color)=(1,1,1,1) } SubShader { pass{ Tags{"LightMode"="ForwardBase" } Cull off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _LightColor0; int _MaxIters; float _TS; float _CS; float _S0; float _T0; float _Limits; float _CR; float _CI; float4 _ConColor; float4 _DivColor1; float4 _DivColor2; float4 _MainTex_ST; struct v2f { float4 pos:SV_POSITION; float2 uv_MainTex:TEXCOORD0; }; v2f vert (appdata_full v) { v2f o; o.pos=mul(UNITY_MATRIX_MVP,v.vertex); o.uv_MainTex = TRANSFORM_TEX(v.texcoord,_MainTex); return o; } float4 frag(v2f i):COLOR { float real = i.uv_MainTex.x * _TS + _S0;//x float imag = i.uv_MainTex.y * _CS + _T0;//y float newr; int numIters; float4 color = 0; for(numIters = 0;numIters < _MaxIters;numIters++) { float newreal = real * real; float newimag = imag * imag; newr = newreal + newimag; if(newr >= _Limits) break; imag = real * imag * 2; real = newreal - newimag; real += _CR; imag += _CI; } if(newr<_Limits) color = _ConColor; if(newr>_Limits) color = lerp(_DivColor1,_DivColor2, frac(numIters/_CS)); return color; } ENDCG }// } }
-----------------------by wolf96 http://blog.csdn.net/wolf96
相关文章推荐
- unity3d shader之Julia集和Mandelbrot集绘制美丽图案
- 妙用Photoshop画笔调试绘制美丽图案
- Unity3D Shader入门指南(一)
- 神奇的分形艺术(四):Julia集和Mandelbrot集
- Unity3d 绘制并获取通过任意点的曲线实现详解
- 猫都能学会的Unity3D Shader入门指南(二)
- Unity3d Shader开发(三)Pass(Color, Material, Lighting )
- Photoshop绘制清新应聘简历图案
- Unity3D shader(20)——布料
- Unity3D Shader官方教程翻译(六)----Shader语法:Pass的Color, Material, Lighting
- Unity3D Shader官方教程翻译(十九)----Shader语法,编写表面着色器
- 分别用Java应用程序和Applet程序实现星星三角形图案的绘制
- 【译】Unity3D Shader 新手教程(1/6)
- 【译】Unity3D Shader 新手教程(2/6) —— 积雪Shader
- Unity3D Shader图像扭曲过场效果
- Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- Unity3D Shader之路 写Shader前必须要知道的事情 渲染流水线的概括
- Unity3D Shader官方教程翻译(十二)----Shader语法:Pass的标记
- 【浅墨Unity3D Shader编程】
- OpenGL shader 内置函数 和 unity3d shaderlib 内置函数对照表