




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、RenderMonkey基本使用方法楔子:差不多從年中開始由于工作需要開始研究Direct3D,這是繼大二開始自學(xué)X開始,睽違了6年后再重新學(xué)習(xí)DX。雖然時(shí)間很久了,但是幸虧還是有點(diǎn)基礎(chǔ),所以上手還是比較順利的。當(dāng)然由于DX本身難度就比較大,再經(jīng)過了一兩個(gè)月的熟悉后后來發(fā)現(xiàn)剛開始寫的代碼很累贅很復(fù)雜且不知所以所,以說脫離實(shí)際的自學(xué)與實(shí)際中根據(jù)目標(biāo)的自學(xué)所學(xué)到的東西是完全兩碼子事兒,這就是所謂的“博學(xué)而篤志,近問而切思,仁在其中矣”,不要好高騖遠(yuǎn),不要脫離實(shí)際。好了,廢話說了這么多,該說正經(jīng)的了。在重新出發(fā)學(xué)DX的時(shí)候,尤其是Shader的時(shí)候,因?yàn)殡[約記得大學(xué)自學(xué)的時(shí)候并沒有接觸這一塊所,以上
2、手就稍微費(fèi)力了一點(diǎn),特別是關(guān)于Shader的資料很難找到入門級(jí)的,大多數(shù)都在XSDK中零星的分布。當(dāng)然這里我并不想也沒有那個(gè)水平去寫一篇hader的教程,只是想分享一下自己在學(xué)習(xí)hader過程中使用到的一個(gè)工具VMD的RenderMonkey關(guān)于RenderMonkey的使用,最基本的當(dāng)然是參看其自帶的DK文檔了,但是這個(gè)SDK除了介紹RenderMonkey的使用方法外,幾乎沒有其它與hader相關(guān)的部分,這,卄令、是很痛苦的。后來從網(wǎng)上狗狗也只找到些許與RenderMonkey相關(guān)的文章,當(dāng)然寫的很好,有基礎(chǔ)入門的,也有提高篇的,但是有個(gè)唯一的缺點(diǎn)就是,它們使用的都是老版本的RenderM
3、onkey,而我現(xiàn)在則使用AMD最新版本的RenderMonkey,其界面和使用方法與老版本是有一定差異的,所以只有靠自己摸索了。下面正式開始/華麗的分割線/首先,從AMD開發(fā)者網(wǎng)站上下載最新版本的RenderMonkey,截至到本文發(fā)布之時(shí),可以下到1.82版本的RenderMonkey。安裝很簡(jiǎn)單,一路Next下去就OK。雙擊運(yùn)行,彈出的Splash,果然就是一只猴子,囧程序的界面,嗯,長(zhǎng)的和VC6很像嘛!靈AMDRenderMonkey1.S2FileEditViewWindowHelpTworkspaceEffectWorkspaceEffectWorkspace就和VC6中的rksp
4、ace的解決方案下添加不同的kspace是作為根(Root)節(jié)點(diǎn)出T的Project了。現(xiàn)在可以嘗試在EffectWorks節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)右鍵,會(huì)發(fā)現(xiàn)彈出一olution的概念相似,即可以在這個(gè)名為EffectWoProject。當(dāng)然,在RenderMonkey中EffectWor的,其下可以添加其它的子節(jié)點(diǎn),這點(diǎn)上并不像VCpace這個(gè)根節(jié)點(diǎn)下添加其它的子節(jié)點(diǎn),就是在這個(gè)根個(gè)多級(jí)菜單,這其中有許多選項(xiàng)我都不打算去觸碰,因轎IEffect|_渝|國(guó)Output為我也沒有完全搞清楚。現(xiàn)在先來看看AddEffectroup,其實(shí)這個(gè)很像VC6中添加一個(gè)文件夾,其實(shí)只是為了方便管理代碼而已,本身不會(huì)
5、影響代碼的運(yùn)行。回想在VC中,當(dāng)我們創(chuàng)建一個(gè)空的Project后,可以自己添加.h/.cpp/.rc。但如果我們使用了VC自帶的工程向?qū)У脑挘秃芎?jiǎn)單地就可以創(chuàng)建一個(gè)應(yīng)用程序,例如一個(gè)基于MFC的對(duì)話框程序等等,然后我們就可以在這個(gè)工程上根據(jù)自己的需要修改相應(yīng)的.h/.cpp來實(shí)現(xiàn)自己所需要的功能。同樣地,在RenderMonkey也有類似的操作,你既可以在一個(gè)空的EffectWorkspace上單獨(dú)添加一個(gè)一個(gè)節(jié)點(diǎn),也可以直接使用RenderMonkey提供的默認(rèn)所謂的DefaultEffect,然后我們?cè)谶@個(gè)DefaultEffect上根據(jù)自己的需要進(jìn)行修改。這里,我們使用RenderMo
6、nkey默認(rèn)的最簡(jiǎn)單的DX效果AddDefaultEffe丈-DirectX-DirectX。|一個(gè)效果至少要有一個(gè)Pass(這說明RenderMonkey中的效果實(shí)際上也和固定管線中IEffect的概念一樣),默認(rèn)為Pass0。在Pass節(jié)點(diǎn)中包含的大多是引用類型的節(jié)點(diǎn)(除了Shader之外)。Pass中一般有兩個(gè)Shader:VertexShader和PixelShader,分別代表頂點(diǎn)著色器和像素著色器,這兩個(gè)節(jié)點(diǎn)是整個(gè)Effect中最重要也是唯一需要編寫代碼的地方。mFile樣。類似于模型參考和流映射參考,我們還需要在Pass中添加一個(gè)紋理對(duì)象(TextureObject,為什么不叫T
7、extureReference呢?不曉的),并將其指向剛剛創(chuàng)建的紋理。感覺這一步就像是固定管線中的IDirect3DDevice9:SetTexture樣。而雙擊這個(gè)紋理對(duì)象后,就更會(huì)發(fā)現(xiàn)一些與固定管線中函數(shù)SetSamplerState和SetTextureStageStatus相似的東東了,而且可以對(duì)它們進(jìn)行設(shè)置,就像SetSamplerState和SetTextureStageStatus所做的事情一樣。Texture(這似乎和以前的添加參考對(duì)象是一樣的含義?),雙擊這個(gè)節(jié)點(diǎn)(就是前面有一個(gè)紅色圓心的節(jié)點(diǎn)),又可以發(fā)現(xiàn)一些與固定管線相像的玩意兒:Clear?DepthBuffer?可以猜
8、想,這個(gè)操作實(shí)際與固定管線中如下代碼是一樣的含義:g_pD3D9Device-GetRenderTarget(0,&pOldRenderTarget);g_pRenderTarget-GetSurfaceLevel(0,&pRenderSurface);g_pD3D9Device-SetRenderTarget(0,pRenderSurface);g_pD3D9Device-Clear(0,0,D3DCLEARTARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_X#000000,1,0);RenderMonkey中并沒有顯式的獲取OldRenderTarget和恢復(fù)OldRend
9、erTarget的過程,但是這卻是固定管線中必須有的,所以可以肯定RenderMonkey也一定做了相同的動(dòng)作,只是不給我們看而已。EAMDRenderMonkey1.S2FileEditViewWindowHelp曙1WorkspaceErejLd.r日裁EffectWorkspace白喲ToTexturematViewProjectionmatProjectionmatTeapotXFormambient口口henderTextinejPTStreamFlappingTeapotPass10renderTexture常Teapot黒VertexShader詐PixelShader餓1PTS
10、treamMapping-昂Pass2常Teapot牠VertexShaderPixelShader0-咅renderTexture噩PTStreamMappingDirectX9.0Pre.TextureeffectFormatrDimensionsWidth:Height:512512if*Useviewportdimensior-ViewportRatioWidth:1.0C7Auto-GenerateMipMa|A8R8G8B8Cant渲染完RendeTarget后,就需要回到原來的幀緩存中(即調(diào)用IDirect3D9Device:SetRenderTarget將原來保存的01y里面是
11、看不到的),并將已經(jīng)渲染為在第二個(gè)Pass中(注意,該P(yáng)ass的Index號(hào)必須RenderTarget恢復(fù)回去,這一步在RenderMonk的RenderableTexture設(shè)置到設(shè)備的某個(gè)紋理層上即可。在RenderMonkey中表現(xiàn)要大,即一定要先渲染RenderTarget再渲染幀緩存),比上述渲染RenderTarget的Pass創(chuàng)建一個(gè)普通的紋理對(duì)象AddTextUreObject并將其指向RenderableTexture,就和使用普通的紋理一樣。IEOutputDirectXDirectXDirectXDirectXDirectsDirectXDirectXDirectXDi
12、reutXPreviewPreviewPreviewPreviewPreviewPreviewPreviewPreviewPreviewwindow:window:Window:window:Window:Window:Window:Window:window:Selected32-bitRGBpixelfottilatwhere8bitsarereservedforeachSelected32-bitz-bufferbitdepthusing24hitsforthedepthchannEnabledstencilbufferclearinqwithclearvalueof0.So1bctEd
13、NomuJ.tisampingse1ected.EnabledEnabledSettingSettingdepthbufferclearingwithclearvalueof1.0U00U0.stencilbufferclearingwithclearvalueof0.depthclearvalueto1.000000stencilclearvaluet匚i0renderingonderiLA.ndisdisabled.willberenderingcontinuos1y.C口m匚iilingpiKelCompilingvert巳梵shaderAPI(D3D)/./RenderToTextuz
14、rs/FSswl/Vertw:iShader/.successshaderAPI(D3D)/./RenderToTestu工w/FSbe:1/PiKelShader/.successAMDRenderMonkey1.S2FileEditView迦ndowHelprenderTextureDimensionsWidth:FormatCurrentTextureObject:renderTextureStageOJ:rend多個(gè)RenderTarget的渲染和hl!4VertexShaderPixelShaderrenderTexturerenderTexturePTStreamMapping中出
15、現(xiàn)多個(gè)紋理對(duì)象的時(shí)候,它們看1EffectWorkspace白R(shí)enderToTexturehlUDi已匚tX9.0Pre.TextureeffectTextureStateE.iiderToTexture2靂卻-matVieAProjectionmatProjectionmatTeapotXFormambient門門renderTexturePTStreamFlappingTeapotPass10renderTextureTeapotVertexShaderPixelShaderPTStreamMappingI-Useviewportdimensiot-ViewportRatioWidth:
16、*Auto-GenerateMipMa|A8R8G8B8旦是有一點(diǎn)要強(qiáng)調(diào)的是當(dāng)在一個(gè)Pass層紋理而不是多次紋理來渲染的候可以看到會(huì)提示到TextureStag到固定管線中的SetTexture的第一State_幾個(gè)節(jié)點(diǎn)而已。實(shí)際上是安裝觀Object節(jié)點(diǎn)上時(shí)loreX”,其中rx為0開始的數(shù)字這難道不會(huì)讓你*因?yàn)楫?dāng)我們把鼠標(biāo)移動(dòng)到Textun個(gè)參數(shù)或者SetTextureStage函數(shù)么?汕許Depthclearvalue:1.00000T|0KCancel想kzp?5AMP_MAGFILTERMAXANISOTROPYD3DSAXMIPLEHELD3DSAr1PJ1INFILTHRDSDS
17、AMPJvlIPFILTERD3DSAMP_MIPMAPLODBIASAhiin匚riLbTESFinc曰OutputDirectXDirectXDirectXDireutXDirectXDirectsDirectXDirectXDirectXPreviewPreviewPreviewPreviewPreviewPreviewPreviewPreviewPreviewwindow:window:Window:window:Window:Window:Window:Window:window:Selected32-bitRGBpixelformatwhere8bitsarereservedfor
18、eachSelected32-bitz-bufferbitdepthusing24hitsforthedepthchannEnabledstencilbufferclearingwithclearvalueof0.Se1ectedNomuJ.tisampingse1ected.EnabledEnabledSettingSettingdepthbufferclearingwithclearvalueof1.0U00U0.stencilbufferclearingwithclearvalueof0.depthclearvalueto1.000000stencilclearvaluet匚i0renderingondeTiiandisdisa.bled.willberenderingcontinuos1y.shaderAPI(D3D)/./RenderToTexture/Fass1/PiselShader/.success:CompilingpixelCom
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 量子力學(xué)原理入門:大學(xué)物理實(shí)驗(yàn)課程教案
- 高純石英砂生產(chǎn)線項(xiàng)目可行性研究報(bào)告(參考范文)
- 2025年心理學(xué)中級(jí)職稱考試試題及答案
- 2025年行政職業(yè)能力測(cè)驗(yàn)試題及答案
- 2025年天文學(xué)基礎(chǔ)知識(shí)測(cè)試試卷及答案
- 2025年勝任力與職業(yè)發(fā)展考試試題及答案
- 2025年農(nóng)業(yè)推廣師職業(yè)考試試卷及答案
- 2025年經(jīng)濟(jì)政策分析與評(píng)估測(cè)試卷及答案
- 2025年國(guó)際關(guān)系理論相關(guān)考試試題及答案
- 2025年公共衛(wèi)生政策與管理考試試題及答案
- 糖尿病并發(fā)癥的早期識(shí)別與干預(yù)
- 05MR404 城市道路-路緣石
- 1982年高考語文試題全國(guó)卷
- 江蘇開放大學(xué)江蘇紅色文化綜合大作業(yè)
- 紡織類專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
- 鉆機(jī)司機(jī)操作規(guī)程
- 電瓶車火災(zāi)應(yīng)急預(yù)案
- 小兒嘔吐的診療思路課件
- 2023年09月云南昆明市公安局第三批補(bǔ)缺招考聘用看護(hù)崗勤務(wù)輔警25人筆試歷年難易錯(cuò)點(diǎn)考題薈萃附帶答案詳解
- 第五章 化工事故后果模擬分析
- 《Python課件:Python基礎(chǔ)教程PPT》
評(píng)論
0/150
提交評(píng)論