首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Shader 學習筆記 (一):FX Composer 2.5 環境建置與首支 Shader

     編輯:關於C++

為何選擇 FX Composer

初學者在 Visual Studio 撰寫 Shader 常面臨:編譯無錯誤但執行失敗無錯誤訊息、調試困難、矩陣參數設定繁瑣。FX Composer 2.5 (NVIDIA) 提供:

  • 內建 3D 檢視視窗,支援模型拖曳、相機操作,免手寫 View/Projection 矩陣。
  • 即時 Shader 編譯錯誤回報(含行號與語意錯誤)。
  • 材質參數視覺化編輯(滑桿、顏色選擇器、貼圖預覽)。
  • 支援 DirectX 10 / Shader Model 4.0+。

安裝關鍵

下載:https://developer.download.nvidia.com/tools/Shader_Debugger/FX_Composer2_Shader_Debugger_Bundle_2.51.0827.1525.exe

安裝時選擇 No Commercial Use 免序號授權。

建立第一支 Shader 步驟

  1. File → New Project → 選擇內建模型(如茶壺) → Next。
  2. 選擇 HLSL FX → Empty → Finish。Materials 面板出現白色球體(新 Effect)。
  3. 將白球拖曳至右下場景模型,建立關聯。場景即時呈現 Shader 效果。
  4. 右鍵白球 → Edit 查看/編輯 .fx 原始碼。

首支 Shader 範例

float4x4 WorldViewProj : WorldViewProjection;

float4 mainVS(float3 pos : POSITION) : POSITION {
    return mul(float4(pos.xyz, 1.0), WorldViewProj);
}

float4 mainPS() : COLOR {
    return float4(1.0, 1.0, 1.0, 1.0);  // 純白
}

technique technique0 {
    pass p0 {
        CullMode = None;
        VertexShader = compile vs_1_1 mainVS();
        PixelShader  = compile ps_1_1 mainPS();
    }
}

關鍵除錯技巧:啟用錯誤緩衝區

VS 專案載入 FX 檔時,必須 提供 ID3DXBuffer* error_buffer 參數捕獲編譯/語意錯誤:

ID3DXBuffer* error_buffer = nullptr;
HRESULT hr = D3DXCreateEffectFromFile(
    g_pd3dDevice, "simple.fx", nullptr, nullptr,
    dwShaderFlags, nullptr, &g_pEffect, &error_buffer);

if (error_buffer) {
    MessageBoxA(nullptr, (char*)error_buffer->GetBufferPointer(), "FX Error", MB_OK);
    error_buffer->Release();
}
if (FAILED(hr)) { /* 處理建立失敗 */ }

原文作者即因缺此步驟,遭遇 ps_1_1 不支援 的執行期靜默失敗。FX Composer 直接在編輯器底部顯示此類錯誤,極大降低除錯門檻。

FX Complier 錯誤訊息範例 New Project 選擇模型 選擇 HLSL FX Empty 首支 Shader 執行效果
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved