1. 程式人生 > >ogre shader傳參,給uniform傳參第二種方式

ogre shader傳參,給uniform傳參第二種方式

轉載自: http://blog.sina.com.cn/s/blog_7c8dc2d50101ce2p.html

Ogre學習如何使用著色器指令碼(參考例子CelShading) Ogre中如何使用著色器

(2012-12-05 18:18:04)
  • 通過SDK中的例子CelShading來了解如何使用著色器.
  • 通過原始碼分析, 需要包含標頭檔案 "RTShaderSystem/OgreRTShaderSystem.h", 以及庫檔案 OgreRTShaderSystem.lib
  • 原始碼構造了一個類 ShaderGeneratorTechniqueResolverListener, 由類Ogre::MaterialManager::Listener派生而成.
  • 使用 Ogre::RTShader::ShaderGenerator::initialize() 和 Ogre::RTShader::ShaderGenerator::finalize() 初始化和關閉著色器生成器
  • 如何著色程式傳遞 uniform 引數
    • 呼叫 Ogre::Entity::getSubEntity() 得到一個 Ogre::SubEntity
    • 呼叫 Ogre::SubEntity::setCustomParameter 傳遞一個自定義 uniform 引數給著色器
    • 本例傳遞了散色光顏色, 鏡面光顏色, 以及 shininess 值

CelShading 使用的指令碼分析

  • 材質 Examples/CelShading
    • vertex_program_ref和fragment_program_ref分別關聯頂點著色器指令碼和片段著色器指令碼
    • param_named_auto 定製了由Ogre更新的CUSTOM引數
    • default_params 引數定製了一系列引數預設的值
    • 著色器原理: 頂點著色其計算三個浮點數 diffuse, specular, edge. diffuse 和 specular 則是根據光照公式計算出來的散射光和鏡面光因子. edge 則為目標到眼睛的單位向量在法線上的投影值. 如果如果角度大於90, 則edge為0, 如果角度等於0, 則edge為1. 角度越小, 則可以表示更清晰的顏色. 在片段著色器中, 最終顏色為 diffuse * edge * 散射顏色 + specular * 鏡面顏色.

相關推薦

ogre shaderuniform第二方式

轉載自: http://blog.sina.com.cn/s/blog_7c8dc2d50101ce2p.html Ogre學習如何使用著色器指令碼(參考例子CelShading) Ogre中如何使用著色器 (2012-12-05 18:18:04) 通過SD

C#實以及為什麼實的值通過方法後不會改變

1.值型別   例如:我們定義一個函式   static void Exchange(int x, int y) { int flag = x; flag = y; y = x; x = flag; }其中,int

小程序上圖片排隊上

length 內容 ext 有效 ges mar 顯示 func 沒有 //沒有處理的wxml,但是有效果,可以簡單試驗一下 <view class=‘minbox1‘> <text class=‘red wzgs‘>*</text>

ajax 上檔案post上檔案ajax 提交 JSON 格式的資料

ajax簡介 前後臺做資料互動 前後端做資料互動的方式(三種):     (1)瀏覽器視窗輸入地址(get的方式)(2)form表單提交資料(3)ajax提交資料 特點 特點:  (1)非同步       非同步與同步的區別:同步是請求發過去,要等著迴應;非同步不

tp3.2整合uploadify上實現解決上中文TP檔案上儲存錯誤問題

1、下載 www.thinkphp.cn/down.html www.uploadify.com/wp-content/uploads/files/uploadify.zip 2、TP3.2整合uploadify 在TP中放入這些檔案 uploadify.css jque

json能數字不能字串

前幾天因專案需要,用echarts做了一個統計柱狀圖,快要完成時問題來了,橫座標需要傳入商品名稱,json傳int可以,正常執行,傳String 就不行,前臺接受不到值。 官方給的例子是 ["yAxis1","yAxis2","yAxis3","yAxis4","yAxis

linux下上檔案檔案上不上去

起初發現問題,以為是程式碼出錯,於是排查程式碼。檢查上傳路徑  System.out.println(":::::::::匯入資料::::::::");  System.out.println("uploadFileName::"+this.myFileFileName); 

iOS 拍照上壓縮上圖片---你沒有想到的解決方法

上傳圖片的正確方式:上傳圖片到伺服器一般是將圖片NSData上傳到伺服器,伺服器返回一個圖片NSString地址,之後再將NSString的路徑轉為url並通過url請求去更新圖片(圖片此時更新的便是NSString)上傳的圖片一般壓縮方式是: NSData *eachImg

使用bootstrap外掛上檔案檔案上樣式超級好看

最近需要做一個視訊上傳的功能,但是感覺平常的檔案上傳樣式不怎麼好看,於是就選擇了bootstrap的檔案上傳樣式,研究了研究,感覺還不錯,首先使用bootstrap應該下載bootatrap外掛。下載地址:https://v2.bootcss.com/customize.ht

Java-Maven專案引入UEditor圖片上元件jar包類庫的5方式

專案用Maven管理jar包,用到了UEditor的jar包。專案原來直接使用UEditor的原始碼,編譯部署後,正常。 後來用的是jar包,放到WEB-INF目錄的lib包下,預設情況下,Maven不會把lib包加入到Classpath中,需要手動加入。 線上Maven

SpringMvc 上excel(註解和非註解兩方式

1、第一種方式: A:JSP頁面: <form name="importForm" action="${ctx }/service/userService/BatchImport.do" method="post" enctype="multipar

深度學習 14. 深度學習調CNN引數調各個引數理解和說明以及調整的要領。underfitting和overfitting的理解過擬合的解釋。

本文為原創文章轉載必須註明本文出處以及附上 本文地址超連結以及 博主部落格地址:http://blog.csdn.NET/qq_20259459  和 作者郵箱( [email prot

nginx反代httpd實現三tomcat代理模型至後端的tomcat服務器會話綁定的三方式

httpmod_jkajp 會話綁定 構建tomcat集群,實現前端一臺nginx反代,到後端的apache服務器,由apache負責向後端的tomcat服務器進行資源調度,這樣的模式比直接用nginx反代到後端主機,tomcat服務器所受到的壓力會更小,服務將會更加穩定,這樣的模式是經過實踐檢驗出來的。如

第二方式修改python unittest的執行順序使用猴子補丁

super 之前 ima out teardown 驗證 不同的 執行順序 鏈接 1、按照測試用例的上下順序,而不是按方法的名稱的字母順序來執行測試用例。 之前的文章鏈接 之前寫的,不是猴子補丁,而是要把Test用例的類名傳到run裏面去執行,與原生的使用有一點區

併發程式設計基礎——執行緒狀態啟動及停止的幾方式

前言 遙想當年大二,實習面試的時候,面試官一個問題:作業系統最小的排程單元是什麼?當時還沒學過作業系統,只知道程序的概念,於是乎信心滿滿的答道,當然是程序啊,然後......就沒有然後了。 之後再看這個問題,其實就是一個笑話。作業系統排程的最小單元其實是執行緒。現在想想當時,自己大二就敢

JavaWeb專案啟動時自動執行程式碼的三方式(包含不佔用tomcat啟動時長的方式

三種方式實現在tomcat啟動時執行某段程式碼 由於這三種方式的執行時長計算在tomcat的啟動時長裡,如果tomcat設定了啟動超時時間,那麼這三種方式執行的操作很可能會讓tomcat啟動超時。 為了解決自動執行的部分不影響tomcat的正常啟動我們可以在三種方式中新建一個執行

使用web.xml方式載入Spring時獲取Spring context的兩方式

  使用web.xml方式載入Spring時,獲取Spring context的兩種方式:   1、servlet方式載入時: 【web.xml】   <servlet>     &nbs

Python基礎(四)--- Python多執行緒介紹開啟執行緒的三方式time模組joinDaemonLock、Rlock事件機制Timer

一、多執行緒介紹 --------------------------------------------------------- 1.threading用於提供執行緒相關的操作,執行緒是應用程式中工作的最小單元。 2.python當前版本的多執行緒庫沒有實現優先順序、執行緒組,執

Table標題行凍結資料行滾動的一方式

        這段時間在做Table標題行凍結,資料行滾動,雖然能實現,但也遇到一些問題,記錄下來。         首先說說實現,實現其實不難,估計很多人都能想象出來,那就是標題行與內容行分離。我是這麼做的,用兩個表格,一個

GreenDao+RxJava 聯合使用普通與響應式兩方式

由於在進行資料庫的增刪改查時,是需要一部分執行時間的,而我們需要的是在資料庫更新操作完成之後操作UI,如果資料庫未讀寫完畢,我們就進行了UI資料操作,則達不到我們的業務需求,也會產生一定的BUG,所以採用 Rxjava輔助GreenDao資料庫。 常用API