webgl 26.針對每個 fragment 計算光照

接上一節(jié)這節(jié)我們來針對每個 fragment 計算光照乘碑,只需要改變 shader 把光照的邏輯從 vertex shader 中轉(zhuǎn)移到 fragment shader 中計算厕宗。

point lighted cube perfragment.png
<script id="vertex-shader" type="glsl">
    attribute vec4 a_Position;
    attribute vec4 a_Color;
    attribute vec3 a_Normal;

    uniform mat4 u_mvpMatrix;
    uniform mat4 u_ModelMatrix;
    uniform mat4 u_NormalMatrix;

    varying vec4 v_Color;
    varying vec3 v_Normal;
    varying vec3 v_Position;

    void main() {
        gl_Position = u_mvpMatrix * a_Position;
        v_Position = vec3(u_ModelMatrix * a_Position);
        v_Normal = normalize(vec3(u_NormalMatrix * vec4(a_Normal,1.0)));
        v_Color = a_Color;
    }
</script>

<script id="fragment-shader" type="glsl">
    precision mediump float;

    uniform vec3 u_LightColor;
    uniform vec3 u_LightPosition;
    uniform vec3 u_AmbientLight;

    varying vec4 v_Color;
    varying vec3 v_Normal;
    varying vec3 v_Position;

    void main() {
       vec3 normal = normalize(v_Normal);
       vec3 lightDirection = normalize(u_LightPosition - v_Position);
       float nDotL = max(dot(lightDirection, normal), 0.0);
       vec3 diffuse = u_LightColor * v_Color.rgb * nDotL;
       vec3 ambient = u_AmbientLight * v_Color.rgb;
       gl_FragColor = vec4(diffuse + ambient, v_Color.a);
    }
</script>

查看源碼

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖肚菠,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異罩缴,居然都是意外死亡蚊逢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門箫章,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烙荷,“玉大人,你說我怎么就攤上這事檬寂≈粘椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵桶至,是天一觀的道長昼伴。 經(jīng)常有香客問我,道長镣屹,這世上最難降的妖魔是什么圃郊? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮女蜈,結果婚禮上持舆,老公的妹妹穿的比我還像新娘。我一直安慰自己鞭光,他們只是感情好吏廉,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布泞遗。 她就那樣靜靜地躺著惰许,像睡著了一般。 火紅的嫁衣襯著肌膚如雪史辙。 梳的紋絲不亂的頭發(fā)上汹买,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音聊倔,去河邊找鬼晦毙。 笑死,一個胖子當著我的面吹牛耙蔑,可吹牛的內(nèi)容都是我干的见妒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甸陌,長吁一口氣:“原來是場噩夢啊……” “哼须揣!你這毒婦竟也來了盐股?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耻卡,失蹤者是張志新(化名)和其女友劉穎疯汁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卵酪,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡幌蚊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了溃卡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溢豆。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘸羡,靈堂內(nèi)的尸體忽然破棺而出沫换,到底是詐尸還是另有隱情,我是刑警寧澤最铁,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布讯赏,位于F島的核電站,受9級特大地震影響冷尉,放射性物質(zhì)發(fā)生泄漏漱挎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一雀哨、第九天 我趴在偏房一處隱蔽的房頂上張望磕谅。 院中可真熱鬧,春花似錦雾棺、人聲如沸膊夹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽放刨。三九已至,卻和暖如春尸饺,著一層夾襖步出監(jiān)牢的瞬間进统,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工浪听, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留螟碎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓迹栓,卻偏偏與公主長得像掉分,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容