我正在嘗試爲我正在編寫的應用程序編寫片段着色器。我將我的制服傳遞到着色器中,但它適用於整個對象。我希望能夠按像素修改對象像素。所以我現在的代碼是......使用SKShader修改單個像素
let shader = SKShader(fileNamed: "Shader.fsh");
shader.addUniform(SKUniform(name: "value", float: 1.0));
m_image.shader = shader;
這裏統一的「值」對所有像素都是相同的。但是,例如,假設我想在繪製一定數量的像素之後將「值」更改爲「0.0」。因此,例如......
shader.addUniform(SKUniform(name: "value", float: 1.0));
// 100 pixels are drawn
shader.addUniform(SKUniform(name: "value", float: 0.0));
這是甚至可能與SKShader?這是否需要在着色器源代碼中完成?
一個想法我想用一個數組均勻的,但它不會出現SKShader允許這樣做。
感謝您的幫助是提前。
好吧,這是很有幫助的。我現在遇到的問題是,我有任意數量的「值」,每次調用渲染時都會發生變化。有沒有辦法讓SKShader使數組統一起來? – CMilby
不,請參閱SKUniformType瞭解SKShader提供的統一類型。 – Bobjt
另請參見iOS 10/macOS 10.12/etc中引入的SKAttribute(此處爲原始問答之後)。這控制着另一種獲取數據到着色器的方式,它可以以不同的方式變化。 – rickster