<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Shadertoy 詳解

          共 1637字,需瀏覽 4分鐘

           ·

          2022-01-07 17:27

          工欲善其事,必先利其器。

          學(xué)習(xí)渲染的小伙伴,不論是用圖形API【OpenGL,Vulkan,Metal,DirectX....】,還是成熟的商業(yè)引擎【Unreal Engine,Unity,Ogre....】,當(dāng)涉及到渲染效果的時(shí)候,就一定會(huì)涉及到使用shader寫(xiě)效果。

          shader可能在其他api,或者渲染引擎中學(xué)到的有好多著色器,shadertoy是沒(méi)有這么完備的功能了,只可以弄好了片元著色器給大家調(diào)效果。

          相信大家可以想到,如果把比如頂點(diǎn)著色器跟幾何著色器弄進(jìn)來(lái),怕是這個(gè)小小的網(wǎng)頁(yè)支持不起來(lái)哈,所以只有片元著色器。

          shadertoy這個(gè)網(wǎng)站,該網(wǎng)站語(yǔ)法跟GLES3.0的shader語(yǔ)法一致,在測(cè)試調(diào)試好效果可以很方便的遷移到OGL工程中直接使用。

          這里給新入門的小伙伴們安利一下。

          www.shadertoy.com

          本文主要介紹Shadertoy的基本使用

          1、功能面板辨識(shí)

          2d003279a139e25331286a348e5969ef.webp

          2、hello,world

          官方示例代碼如下,添加標(biāo)注。

          void?mainImage(?out?vec4?fragColor,?in?vec2?fragCoord?)
          {
          ????//?歸一化紋理坐標(biāo)到[0-1]范圍
          ????vec2?uv?=?fragCoord/iResolution.xy;
          ????//?根據(jù)時(shí)間變量iTime與紋理坐標(biāo)組合作為入?yún)⒂?jì)算像素顏色
          ????vec3?col?=?0.5?+?0.5*cos(iTime+uv.xyx+vec3(0,2,4));
          ????//?輸出顏色到fragColor,只需要給該變量賦值就可以展示在最終渲染效果上
          ????fragColor?=?vec4(col,1.0);
          }

          說(shuō)明:

          1. 類似于C語(yǔ)言的main函數(shù),shadertoy給大家預(yù)留的片元著色器代碼入口函數(shù)是:
          void?mainImage(?out?vec4?fragColor,?in?vec2?fragCoord?).

          函數(shù)參數(shù)列表定義的第一個(gè)變量可以看到fragColor是out vec4,意思為輸出的四維向量,四維向量同大家理解的顏色向量一樣,rgba四元素;out意思為該變量對(duì)應(yīng)的顏色會(huì)最終輸出映射到最終你期望的幀緩存區(qū)上去。

          入口函數(shù)第二個(gè)變量定義為in vec2,in意思為從外部輸入進(jìn)來(lái)的,vec2 意思為二維向量,合并在一起意思為從外部輸入的二維向量,實(shí)際代表的意思為外部輸入進(jìn)來(lái)的紋理坐標(biāo)【跟gles一般操作有差異的是此處的fragCoord為實(shí)際坐標(biāo),而不是歸一化(0,1)的坐標(biāo)】。

          1. 第一行解釋:因?yàn)榍懊嫣岬搅巳雲(yún)ragCoord不是歸一化的數(shù)據(jù),而我們渲染中使用texture采樣紋理的時(shí)候坐標(biāo)卻需要是歸一化坐標(biāo),所以這里對(duì)坐標(biāo)進(jìn)行了轉(zhuǎn)換,實(shí)際坐標(biāo)/iResolution.xy 即可映射紋理坐標(biāo)到[0,1]范圍內(nèi)。

          2. 第二行解釋:根據(jù)時(shí)間與紋理坐標(biāo),cos函數(shù)計(jì)算一個(gè)顏色

          cos(iTime+uv.xyx+vec3(0,2,4));

          可以拆分為兩部分cos(uv.xyx);生成漸變的初始效果,然后在加上默認(rèn)顏色vec3(0,2,4),顏色加深。

          然后再在cos函數(shù)中加入iTime【程序啟動(dòng)后運(yùn)行的時(shí)長(zhǎng),單位s】,效果變?yōu)闈u變顏色逐漸移動(dòng)變化,類似于在cos函數(shù)中選定一個(gè)不長(zhǎng),一直沿著x軸移動(dòng)后cos函數(shù)對(duì)應(yīng)值的變化情況

          效果

          shadertoy示例效果

          f1c5f64dfeeea370dfaa1f17fd71fbc8.webp

          作者:阿凱??來(lái)源:https://zhuanlan.zhihu.com/p/448215305

          3b4a46e3155d64d3b166cf6812153ba6.webp

          技術(shù)交流,歡迎加我微信:ezglumes ,拉你入技術(shù)交流群。

          私信領(lǐng)取相關(guān)資料

          推薦閱讀:

          音視頻開(kāi)發(fā)工作經(jīng)驗(yàn)分享 || 視頻版

          OpenGL ES 學(xué)習(xí)資源分享

          開(kāi)通專輯 | 細(xì)數(shù)那些年寫(xiě)過(guò)的技術(shù)文章專輯

          Android NDK 免費(fèi)視頻在線學(xué)習(xí)?。。?/span>

          你想要的音視頻開(kāi)發(fā)資料庫(kù)來(lái)了

          推薦幾個(gè)堪稱教科書(shū)級(jí)別的 Android 音視頻入門項(xiàng)目

          覺(jué)得不錯(cuò),點(diǎn)個(gè)在看唄~

          1ddf2bceb8b847e7174ea6c129e986ae.webp


          瀏覽 107
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色毛片毛片 | 丁香五月婷婷综合小说 | 国产成人99精品免费视频明星 | 大香蕉国语黄色录像 | 亚洲AV综合色区无码国产网站 |