最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenGL Shader實現(xiàn)光照發(fā)光體特效

 更新時間:2022年02月11日 16:25:38   作者:JulyYu  
這篇文章主要介紹了如何通過OpenGL Shader實現(xiàn)光照發(fā)光體特效,不同于陰影遮蓋,它是利用圓形繪制向內(nèi)部。感興趣的小伙伴可以了解一下

內(nèi)發(fā)光原理

內(nèi)發(fā)光原理簡單概況是:采樣周邊像素alpha取平均值疊加效果。概括來說似乎好像特別簡單,但需要一定的理解和消化。發(fā)光物體可以當做是一個圓形對象,去采集圓形對象周邊像素值。例如已知圓形半徑是R,角度是Angle,然后根據(jù)半徑和角度推導(dǎo)算出當前像素坐標位置,用當前像素坐標位置得到透明度再去做計算。

但其實在陰影遮罩效果中似乎已經(jīng)介紹過了同樣能夠通過。不同點在于陰影遮蓋是利用圓形繪制向外部暈染而內(nèi)發(fā)光效果是作用于內(nèi)部。

發(fā)光體實現(xiàn)

首先采用繪制圓的方法實現(xiàn)RGB疊加。可以看到中心位置繪制圓的位置顏色較深,向外擴散顏色逐漸暗淡。效果雖然不對但已經(jīng)知道下一步該怎么實現(xiàn)了。

void main() {
    vec2 uv = gl_FragCoord.xy / iResolution.xy;
    uv -= 0.5;
    uv.x *= iResolution.x/iResolution.y; 
    vec3 color = vec3(0.);
    float glow = length(uv);
    color += glow;
    gl_FragColor = vec4(color,1.);
}

通過取反操作,可用一個數(shù)除以length(uv)再相乘一個小數(shù)來稍微減小值的大小。從最終結(jié)果可以看到所期望的效果。對比之前效果展示相除相當于對原結(jié)果取反,原先內(nèi)部是數(shù)值最小,相除之后內(nèi)部數(shù)值變成最大。

void main() {
    vec2 uv = gl_FragCoord.xy / iResolution.xy;
    uv -= 0.5;
    uv.x *= iResolution.x/iResolution.y; 
    vec3 color = vec3(0.);
    float glow = 0.05 * 3./length(uv);
    color += glow;
    gl_FragColor = vec4(color,1.);
}

但過渡效果泛白范圍似乎過大了一些繼續(xù)對原算法進行優(yōu)化。增加pow方法將數(shù)值變得更小一些。

float getGlow(float dist, float radius, float intensity){
    return pow(radius/dist, intensity);
}

void main() {
    vec2 uv = gl_FragCoord.xy / iResolution.xy;
    uv -= 0.5;
    uv.x *= iResolution.x/iResolution.y; 
    vec3 color = vec3(0.);
    float glow = 0.05 * getGlow(length(uv), 1., 2.);
    color += glow;
    gl_FragColor = vec4(color,1.);
}

擴展效果

小太陽

改變發(fā)光位置和發(fā)光顏色模擬實現(xiàn)太陽光照的效果。

float getGlow(float dist, float radius, float intensity){
    return radius/dist;
}

void main() {
    vec2 uv = gl_FragCoord.xy / iResolution.xy;
    vec3 color = vec3(0.);

    vec2 uv2 = uv;
    uv2 -=1.0;
    float glow = 0.09 * 3./length(uv2);
    color += (5.0 * vec3(0.02 * glow) + vec3(0.9686, 0.6941, 0.0) * glow);
    gl_FragColor = vec4(color,1.);
}

光源移動效果

float getGlow(float dist, float radius, float intensity){
    return radius/dist;
}

void main() {
    vec2 uv = gl_FragCoord.xy / iResolution.xy;
    vec3 color = texture(iChannel1,uv).rgb;

    float position = sin(iTime) / 2.;
    vec2 uv2 = uv;
    uv2 -=0.5;
    uv2.x *= iResolution.x/iResolution.y; 
    uv2 += position;
    float glow = 0.09 * 3./length(uv2);
    color += (5.0 * vec3(0.02 * glow));
    gl_FragColor = vec4(color,1.);
}

以上就是OpenGL Shader實現(xiàn)光照發(fā)光體特效的詳細內(nèi)容,更多關(guān)于OpenGL Shader光照發(fā)光體的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android Service控件用法實例分析

    Android Service控件用法實例分析

    這篇文章主要介紹了Android Service控件用法,較為詳細的分析了Service控件的功能、定義、使用方法與注意事項,需要的朋友可以參考下
    2016-06-06
  • Android 文件存儲與SharedPreferences存儲方式詳解用法

    Android 文件存儲與SharedPreferences存儲方式詳解用法

    SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出
    2021-10-10
  • Android Service生命周期詳解

    Android Service生命周期詳解

    這篇文章主要介紹了Android Service生命周期詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Android電量優(yōu)化提高手機續(xù)航

    Android電量優(yōu)化提高手機續(xù)航

    這篇文章主要為大家介紹了Android電量優(yōu)化提高你的手機續(xù)航示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • android控件封裝 自己封裝的dialog控件

    android控件封裝 自己封裝的dialog控件

    自定義dialog肯定是用的很多了 但是感覺每次做都是很亂單純完成任務(wù)而已,現(xiàn)在封裝了一下以后用到直接copy,需要的朋友可以參考下
    2012-11-11
  • Kotlin開發(fā)的一些實用小技巧總結(jié)

    Kotlin開發(fā)的一些實用小技巧總結(jié)

    Kotlin 是一個基于 JVM 的新編程語言,用 JetBrains 的話來說是「更現(xiàn)代化、更強大,所以下面這篇文章主要給大家總結(jié)介紹了關(guān)于Kotlin的一些開發(fā)實用小技巧,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • 談?wù)凙ndroid Fragments 詳細使用

    談?wù)凙ndroid Fragments 詳細使用

    本篇文章主要介紹了Android Fragments 詳細使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • android 中win10 使用uwp控件實現(xiàn)進度條Marquez效果

    android 中win10 使用uwp控件實現(xiàn)進度條Marquez效果

    這篇文章主要介紹了android 中win10 使用uwp控件實現(xiàn)進度條Marquez效果,需要的朋友可以參考下
    2017-06-06
  • Android實現(xiàn)圖片在屏幕內(nèi)縮放和移動效果

    Android實現(xiàn)圖片在屏幕內(nèi)縮放和移動效果

    這篇文章主要為大家詳細介紹了Android控制圖片在屏幕內(nèi)縮放和移動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • WebView的幾個常見功能使用方法

    WebView的幾個常見功能使用方法

    本篇文章介紹了WebView的幾個常見功能,WebView的功能很強大,感興趣的小伙伴們可以了解一下。
    2016-11-11

最新評論

汕尾市| 唐河县| 瑞金市| 镇赉县| 丹棱县| 基隆市| 黄冈市| 沙湾县| 婺源县| 石景山区| 江门市| 贵溪市| 称多县| 化德县| 禹城市| 安多县| 阿克陶县| 峡江县| 桃园市| 嵩明县| 油尖旺区| 贵港市| 株洲县| 达拉特旗| 手游| 天全县| 瑞安市| 兰州市| 阿拉善右旗| 宜川县| 苏尼特左旗| 随州市| 台东市| 衡南县| 丰顺县| 田阳县| 崇州市| 中山市| 无锡市| 界首市| 宁城县|