圖形學初識--顏色混合

文章目錄

  • 前言
  • 正文
    • 為什么要有顏色混合?
    • 顏色混合常見實現方式?
    • 上述顏色混合注意點
  • 結尾:喜歡的小伙伴點點關注+贊哦!

前言

本章節補充一下顏色混合的內容,主要包含:為什么要有顏色混合?顏色混合常實現方式?

正文

為什么要有顏色混合?

當需要渲染透明或半透明物體時,需要引入顏色混合,同時它也是顏色RGBA的alpha的體現!

在這里插入圖片描述

顏色混合常見實現方式?

每個像素的顏色由RGBA構成,其中第四分量我們通常叫做alpha,也叫做透明度,一般取值范圍 [ 0 , 1 ] [0,1] [0,1]? 。

接下來舉個最簡單的顏色混合表達形式:

已知屏幕中 ( x , y ) (x,y) (x,y) 位置處的像素顏色RGB分量為 d s t C o l o r ? \vec {dstColor} dstColor ,它的透明度為 d s t A l p h a dstAlpha dstAlpha ,當我們需要在此位置渲染的像素顏色為 s r c C o l o r ? \vec {srcColor} srcColor ,透明度為 s r c A l p h a srcAlpha srcAlpha ,則通過一下公式計算出最終顏色:
b l e n d C o l o r = s r c A l p h a ? s r c C o l o r ? + ( 1 ? s r c A l p h a ) ? d s t C o l o r ? blendColor = srcAlpha * \vec {srcColor} + (1-srcAlpha) * \vec {dstColor} blendColor=srcAlpha?srcColor +1?srcAlpha?dstColor
此時我們用待渲染像素顏色的alpha值直接表明顏色權重,我們簡單舉個例子:

? 當繪制不透明物體時, s r c A l p h a = 1 srcAlpha = 1 srcAlpha=1,此時原本屏幕的像素顏色就相當于被忽略了;

? 當繪制全透明物體時, s r c A l p h a = 0 srcAlpha = 0 srcAlpha=0?,此時相當于沒有畫此像素;

? 當繪制透明物體時, s r c A l p h a = ( 0 , 1 ) srcAlpha = (0,1) srcAlpha=0,1,此時相當于將底色和目標色進行線性插值,從而得到一種混合的效果;

當然了,這些公式都可以發散,例如寫成如下:
b l e n d C o l o r = ( 1 ? s r c A l p h a ) ? s r c C o l o r ? + s r c A l p h a ? d s t C o l o r ? blendColor = (1 - srcAlpha) * \vec {srcColor} + srcAlpha * \vec {dstColor} blendColor=(1?srcAlpha)?srcColor +srcAlpha?dstColor

根據具體的需要決定!

上述顏色混合注意點

上述的實現方式,屬于最簡單的方式。細心的朋友很容易想到,某個像素的繪制受到底色的制約。也就是說,假如需要繪制透明物體,必須將不透明物體先繪制上去,然后才能達到混合的效果,所以咱們需要注意混合的繪制次序,如下:

  • 先繪制不透明物體,保證底色正確
  • 有遠及近繪制半透明物體,保證近距離透明物體不會遮擋遠距離透明物體(按攝像機距離排序)

效果圖:

在這里插入圖片描述

結尾:喜歡的小伙伴點點關注+贊哦!

你們的點贊就是我創作的最大動力!希望對各位小伙伴能夠有所幫助哦,永遠在學習的道路上伴你而行, 我是航火火,火一般的男人!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21787.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BGP——邊界網關路由協議

BGP -邊界網關路由協議 OSPF RIP EIGRP AS——自治系統 標準編號16位二進制 0-65535 1-64511公有 64512 -私有 擴展編號 32位二進制 動態路由協議: GP ——內部網關路由協議 —— AS之內 或企業網、局域網 RIP OSPF EIGRP EGP-外部網關路由協議 - …

Centos 7 安裝刻錄至硬件服務器

前言 在日常測試中,會遇到很多安裝的場景,今天給大家講一下centos 7 的安裝,希望對大家有所幫助。 一.下載鏡像 地址如下: centos官方鏡像下載地址https://www.centos.org/download/ 按照需求依次點擊下載 二.鏡像刻錄 鏡像刻…

idea springboot woff/woff2/eot/ttf/svg等小圖標不顯示的問題 - 第515篇

歷史文章(文章累計500) 《國內最全的Spring Boot系列之一》 《國內最全的Spring Boot系列之二》 《國內最全的Spring Boot系列之三》 《國內最全的Spring Boot系列之四》 《國內最全的Spring Boot系列之五》 《國內最全的Spring Boot系列之六》 《…

Shopify 獨立站監控觀測最佳實踐

Shopify 簡介 Shopify 是一個全球領先的電子商務平臺,它為商家提供了一整套在線商店解決方案。自 2006 年成立以來,Shopify 已經幫助數百萬商家在全球范圍內建立和發展他們的在線業務。 監控觀測 Shopify 站點對于確保業務連續性、優化用戶體驗和提高運…

python虛擬環境venv的安裝--ubuntu

venv是Python內置的虛擬環境管理工具 1.安裝python3-venv包: sudo apt install python3.12-venv2.創建虛擬環境(在項目目錄下) python3 -m venv venv3. 激活虛擬環境: source venv/bin/activate4.在虛擬環境中安裝所需的庫&am…

Linux shell編程學習筆記56:date命令——顯示或設置系統時間與日期

0 前言 2024年的網絡安全檢查又開始了,對于使用基于Linux的國產電腦,我們可以編寫一個腳本來收集系統的有關信息。在收集的信息中,應該有一條是搜索信息的時間。 1. date命令 的功能、格式和選項說明 我們可以使用命令 date --help 來查看 d…

python 虛擬環境安裝及python包庫安裝

python 虛擬環境安裝及python包庫安裝 安裝虛擬環境的方式注意事項 安裝虛擬環境的方式 切記盡量不要混用 pip 安裝 對于pip安裝,使用命令如下 下載virtualenv 工具 pip install virtualenv 創建虛擬環境并激活環境virtualenv venv source ./venv/bin/activate co…

Kafka之Broker原理

1. 日志數據的存儲 1.1 Partition 1. 為了實現橫向擴展,把不同的數據存放在不同的 Broker 上,同時降低單臺服務器的訪問壓力,我們把一個Topic 中的數據分隔成多個 Partition 2. 每個 Partition 中的消息是有序的,順序寫入&#x…

LeetCode刷題:反轉鏈表

leetCode真題 206. 反轉鏈表 屬于基礎簡單題目 常見的做法有遞歸和while循環 遞歸 // 1. 遞歸參數和返回值public static ListNode reverseList(ListNode head) {// 1. 遞歸終止條件if (head null || head.next null) {return head;}// 遞歸邏輯ListNode last reverseL…

達夢數據庫相關SQL及適配Mysql配置總結

🍓 簡介:java系列技術分享(👉持續更新中…🔥) 🍓 初衷:一起學習、一起進步、堅持不懈 🍓 如果文章內容有誤與您的想法不一致,歡迎大家在評論區指正🙏 🍓 希望這篇文章對你有所幫助,歡…

解決Python導入第三方模塊報錯“TypeError: the first argument must be callable”

注意以下內容只對導包時遇到同樣的報錯會有參考價值。 問題描述 當你嘗試導入第三方模塊時,可能會遇到如下報錯信息: TypeError: the first argument must be callable 猜測原因 經過仔細檢查代碼,我猜測這個錯誤的原因是由于變量名沖突所…

Windows 系統安裝 VisualSVN Server

一.下載 VisualSVN Server VisualSVN-Server 是 SVN 版本控制中服務器端要使用的軟件,就是我們提交代碼存在安裝這個軟件的電腦上,它將很多配置和服務直接幫你完成,簡單好用容易上手。VisualSVN Server有三個版本,社區版免費但限15個用戶,另有一般和‘企業’兩個收費版本…

如何卸載ollama

文章目錄 一 概述二 卸載2.1 Windows平臺卸載 ollama2.2 Linux 平臺卸載 ollama2.3 Docker 平臺卸載 ollama 參考鏈接 一 概述 本文檔主要講述 ollama 如何卸載,適用范圍包括 Windows Linux 以及 Docker 等平臺的安裝方式。 二 卸載 2.1 Windows平臺卸載 ollama …

學習C++應該做點什么項目

C作為一門底層可操作性很強的語言,廣泛應用于游戲開發、工業和追求性能、速度的應用。 比如騰訊,無論游戲,還是微信,整個鵝廠后臺幾乎都是 C 開發,對 C 開發者的需求非常大。 但問題是C入門和精通都比較困難&#xf…

有哪些掙錢軟件一天能賺幾十元?盤點十個能長期做下去的掙錢軟件

在這個信息爆炸的時代,每個人都在尋找快速賺錢的秘訣。很多人做兼職副業的目標并不是獲得很大的成功,大部分人一天能賺幾十就心滿意足了。 今天,我要帶你一探究竟,揭秘那些能讓你日賺幾十元的掙錢軟件。準備好了嗎?讓我…

單槍匹馬月入17萬美元:數字游民Pieter Levels如何成就商業傳奇

了解數字游民的應該都聽說過 Pieter Levels,可以說他是數字游民的先驅人物。 他在推特上擁有超過43萬的粉絲,僅憑一臺筆記本電腦就連續建立了多個高盈利網站,光是推特主頁上展示的比較新的幾個網站,每月收入加起來就高達 17.6 萬…

第九周:員工激勵理論

1. 關注自己到關注他人 你是激勵者,也會是被激勵者。 雖然每個人的價值觀不一樣,但要做好激勵員工這件事情,我覺得可以從自身角度出發,可以問問自己,你是如何被激勵的? 如果是我,就只想要錢&…

如何實現區域公司和專業公司合理有效的銜接?

對于集團公司來說,各區域公司、專業公司的管理問題成為困擾管理者的難題。特別是在信息壁壘比較嚴重的情況下,各個單位往往各自為政、自行其是,缺乏有效的溝通和協作,導致整體管理效率低下。那么應該如何實現區域公司和專業公司合…

Vulnhub項目:THE PLANETS: MERCURY

1、靶場地址 The Planets: Mercury ~ VulnHubThe Planets: Mercury, made by SirFlash. Download & walkthrough links are available.https://vulnhub.com/entry/the-planets-mercury,544/ 這好像是個系列的,關于星球系列,之前還做過一個地球的&a…

滑動窗口最大值-力扣

在做這道題時,首先想到的解法是使用隊列來做,維護一個隊列,每次保存滑動窗口大小的長度,并判斷此時隊列中的最大值,但這樣做,在k的值較大時,出現了超時問題,代碼如下: c…