如何創(chuàng)建一個(gè)螺旋亮度梯度
我被困在創(chuàng)建一個(gè)如下所示的亮度梯度(值從內(nèi)圈開始是連續(xù)的)。什么公式能產(chǎn)生這樣的亮度梯度?所以當(dāng)時(shí)間加在上面時(shí),它會(huì)以螺旋的形式從內(nèi)圈慢慢變亮?嘗試了
解答動(dòng)態(tài)
在我看來(lái)你想要的是這個(gè):
shaderquot;{Properties{u Turns(quot;,float)=3}子影{Tags{RenderTypequot;Opaquequot;UnityCG.cginc公司;結(jié)構(gòu)appdata{float4頂點(diǎn):位置;float2 uv:TEXCOORD0;};struct v2f{float2 uv:TEXCOORD0;float4 vertex:SV\u POSITION;};float\u Turns;v2f vert(appdata v){v2f o;o.vertex=UnityObjectToClipPos(v.vertex);//將(0,0)放置在坐標(biāo)空間/四邊形的中心//并縮放極值以適應(yīng)n圈螺旋。o、 uv=(v.uv-0.5f)*2.0f*\u匝數(shù);return o;}fixed4 frag(v2f i):SV\u Target{//轉(zhuǎn)換為極坐標(biāo),角度標(biāo)準(zhǔn)化為每匝1。浮動(dòng)半徑=長(zhǎng)度(i.uv);浮動(dòng)角度=atan2(i.uv.y,i.uv.x)/(2.0*3.141592653589);//添加達(dá)到此半徑所需的整圈數(shù)。angle+=floor(radius-angle);//形成一個(gè)從明亮的內(nèi)部到黑暗的外部的漸變,//隨著時(shí)間的推移,漸變會(huì)逐漸變大以填充螺旋。return 4.0f*(frac(3.0f*_Time.x)*(_Turns+1.0f)-angle-1.0f);}ENDCG}}}} 上面的版本很簡(jiǎn)單,但有點(diǎn)丑陋。亮度隨著角度線性上升,這意味著你會(huì)得到一個(gè)粗糙的馬赫帶,它撞到白色-看起來(lái)像一個(gè)銳角,而不是一個(gè)平滑的融合。它也以一個(gè)恒定的角速率移動(dòng),這意味著它在像素距離上移動(dòng)得更快,因?yàn)槲覀冊(cè)诎霃缴献叩酶h(yuǎn),并且漸變漸變變長(zhǎng)。
如果你需要的話,對(duì)代碼進(jìn)行一些調(diào)整可以使其平滑首選:
4固定框架(v2f i):SV_目標(biāo){浮動(dòng)半徑=長(zhǎng)度(i.uv);浮動(dòng)角度=atan2(i.uv.y,i、 uv.x)/(2.0*3.141592653589);角度+=地板(半徑-角度)+1.0f;角度=角度*角度;浮動(dòng)t=分形(3.0f*\u時(shí)間.x);浮動(dòng)梯度=飽和(1.0f-(0.25f+0.5f*t)*(t*(\u轉(zhuǎn)彎*\u轉(zhuǎn)彎+1.0f)-角度-1.0f));梯度*=梯度;返回1.0f-梯度*梯度;} 此版本在螺旋的匝數(shù)之間仍然有一個(gè)尖銳的鋸齒邊,但是如果您的應(yīng)用程序需要,也可以對(duì)其進(jìn)行平滑處理。- End
免責(zé)聲明:
本頁(yè)內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無(wú)關(guān)。本頁(yè)內(nèi)容僅供參考,請(qǐng)您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請(qǐng)咨詢專業(yè)人士處理。