【Shader】畫線

https://thebookofshaders.com/ 上學(xué)習(xí) shader,記個(gè)筆記。

在最左邊畫一條線

#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;

void main() {
    vec2 st = gl_FragCoord.xy/u_resolution.xy;
    float borad = 0.02;
    float left_line = step(borad, st.x);
    vec3 color = vec3(left_line);
    gl_FragColor = vec4(color,1.0);
}

左邊的線

這里最重要的就是step函數(shù)(詳情)。
在我的例子里,所有小于 0.02 的 x 都返回 0 ,效果就是一條 0.02 寬的黑線。


那如果要畫一條最下面的線,那么只需要把float left_line = step(borad, st.x); 里的st.x改成st.y即可。

下面的線


如果我要同時(shí)畫左邊下面的。那就需要這樣

void main() {
    ...
    float left_line = step(borad, st.x);
    float bottom_line = step(borad, st.y);
    float lb = left_line * bottom_line;
    vec3 color = vec3(lb);
    ...
}

把結(jié)果相乘。


左下的線

為什么乘一下就可以得到兩條線?

在我的例子里,step的結(jié)果,如果小于 0.02 ,那么就是 0 ,否則是 1 。

  • 符合left_line,符合bottom_line,結(jié)果是 0 * 0 = 0
  • 符合left_line,不符合bottom_line,結(jié)果是 0 * 1 = 0
  • 不符合left_line,符合bottom_line,結(jié)果是 1 * 0 = 0

上面這些結(jié)果相乘都為 0 。用在顏色里就是黑色。

  • 不符合left_line,不符合bottom_line,結(jié)果是 1 * 1 = 1

上面的結(jié)果是白色。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 聲明:作者翻譯論文僅為學(xué)習(xí),如有侵權(quán)請(qǐng)...
    SnailTyan閱讀 2,734評(píng)論 0 5
  • 我的圖書館 留言交流 2000個(gè)最常用的英語單詞 2016-05-15酴羰駘璺 2000個(gè)最常用的英語單詞 (英語...
    Mr_Wang92閱讀 1,029評(píng)論 0 0
  • 早期在讀研的時(shí)候,就在找把PDF掃描文件清晰化,有些掃描書籍出來的PDF,又是歪的,又是糊的,看起來非常費(fèi)勁,網(wǎng)上...
    girlfull閱讀 7,265評(píng)論 1 1
  • 以下文章是我在網(wǎng)上收集的內(nèi)容,為了記錄自己的學(xué)習(xí)以及為了以后不到處找而記錄下來,如果對(duì)你有用,請(qǐng)感謝寫這些文章的前...
    DCbryant閱讀 1,031評(píng)論 0 2
  • 1. box-sizing box-sizing屬性主要用來控制元素的盒模型的解析模式。默認(rèn)值是content-b...
    下下下個(gè)路口左轉(zhuǎn)閱讀 215評(píng)論 0 0

友情鏈接更多精彩內(nèi)容