2012-06-16 64 views
1

我在XNA4的效果文件,被編譯爲着色器模型3.爲什麼常量的值會影響HLSL着色器編譯?

此行彙編精(2個色之間進行內插):

return lerp(float4(1,0,0,1),float4(0,0,1,1),pf.x); 

從0改變所述第一顏色的綠色分量到0.5:

return lerp(float4(1,0.5,0,1),float4(0,0,1,1),pf.x); 

結果在一個失敗的編譯:

error X6045: When constant registers are read multiple times in a single 
instruction, the _abs modifier must either be present on all of the 
constants, or none of them. 

谷歌搜索的錯誤代碼沒有返回(編輯:不是這個問題除外)

+1

哦,它返回這個問題現在;-) – Joey

+0

所以你的意思是,發佈「谷歌沒有返回值」上淨是隻有永遠正確暫時? – geofftnz

+0

如果您在SO上發帖,Google幾秒鐘後就會有索引問題。這只是我指出的好奇心,沒有理由編輯你的帖子。 – Joey

回答

1

根據documentation所有傳遞給lerp()應該是相同的類型和大小的值,所以也許這將工作:

return lerp(float4(1,0.5,0,1),float4(0,0,1,1),float4(pf.x,pf.x,pf.x,pf.x)); 
+0

您也可以使用'pf.xxxx'而不是'float4(pf.x,pf.x,pf.x,pf.x)'。 – miloszmaki

相關問題