我試圖看到着色器看起來像在Interface Builder中使用精靈套件,並且想用一些着色器在ShaderToy使用着色器。爲此,我創建了一個「shader.fsh」文件,一個場景文件,並向場景添加了一個顏色精靈,給它一個自定義着色器(shader.fsh)。從Shadertoy在Interface Builder(Xcode中)
雖然非常基本的着色器似乎工作:
void main() {
gl_FragColor = vec4(0.0,1.0,0.0,1.0);
}
任何企圖我做出着色器從ShaderToy事業的Xcode轉換爲儘快試圖使它們凍結(色紡紗球)。
我一起工作,例如着色器,是this one:
#define M_PI 3.1415926535897932384626433832795
float rand(vec2 co)
{
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
float size = 30.0;
float prob = 0.95;
vec2 pos = floor(1.0/size * fragCoord.xy);
float color = 0.0;
float starValue = rand(pos);
if (starValue > prob)
{
vec2 center = size * pos + vec2(size, size) * 0.5;
float t = 0.9 + 0.2 * sin(iGlobalTime + (starValue - prob)/(1.0 - prob) * 45.0);
color = 1.0 - distance(fragCoord.xy, center)/(0.5 * size);
color = color * t/(abs(fragCoord.y - center.y)) * t/(abs(fragCoord.x - center.x));
}
else if (rand(fragCoord.xy/iResolution.xy) > 0.996)
{
float r = rand(fragCoord.xy);
color = r * (0.25 * sin(iGlobalTime * (r * 5.0) + 720.0 * r) + 0.75);
}
fragColor = vec4(vec3(color), 1.0);
}
我已經試過:
- 與主(無效)更換mainImage()(這樣它會被稱爲)
- 替換iXxxxx變量(iGlobalTime,iResolution)和fragCoord變量及其相關變量(基於建議here)
- 代替一些變量(iGlobalTime)的...
當改變mainImage到main()和換出變量得到它在TinyShading實時測試應用程序沒有錯誤工作 - 結局總是在Xcode相同(旋轉球,凍結)。這裏的任何建議都會有幫助,因爲目前有關該主題的信息量非常少。
在這個問題上有什麼消息? – salocinx
@salocinx - 我已經放棄了。你有同樣的問題嗎? – BadPirate
不完全相同的問題...我試圖編譯這一個:https://www.shadertoy.com/view/MtB3zW按照你的建議,我也讀鏈接的頁面。我也用相應的對應物替換了每個未知領域,並相應地更改了主要簽名。但是我收到一些「非const引用無法綁定到向量元素」的錯誤。目前X代碼沒有用簡單的着色器掛起,但着色器矩陣函數似乎與WebGL着色器語言的不同之處在於實現方式不同......蘋果公司與世界其他地方做的不同 - 再一次......; ) – salocinx