C++中如下代码该在shader中如何实现?
if ( gender == MALE )
{
if ( age < 14 )
printf("Hey! Boy.\n");
else if ( age > 14 )
printf("Hi! Guy.\n");
}
else
printf("Hi! Girl.\n");
13 个解决方案
#1
应该支持的吧,难道我小白了?
#2
跟你的显卡有关;
不知楼主什么环境,或许与你的编译设置也有关;
好像只是model 1.X不支持吧;你在支持model 3.0的显卡上试试.
不知楼主什么环境,或许与你的编译设置也有关;
好像只是model 1.X不支持吧;你在支持model 3.0的显卡上试试.
#3
这样可以的吗?
#4
if嵌套?
#5
shader mode 3.0 以后简单语法跟C++基本上一样,lz说的完全可以实现
#6
这个本来就支持的 -- b 看看你的代码 = =
#7
float4x4 WorldViewProj : WorldViewProjection;
float4 mainVS(float3 pos : POSITION) : POSITION{
return mul(float4(pos.xyz, 1.0), WorldViewProj);
}
float4 mainPS(float2 texCoord : TEXCOORD0) : COLOR {
if (texCoord.x > 1.f)
return float4(1, 0, 0, 0);
else if (texCoord.x > 0.5)
{
if (texCoord.x > 0)
return float4(0, 1, 0, 0);
else
return float4(0, 0, 1, 0);
}
else
return float4(1.0, 1.0, 1.0, 1.0);
}
technique technique0 {
pass p0 {
VertexShader = compile vs_2_0 mainVS();
PixelShader = compile ps_2_0 mainPS();
}
}
比如这样是可以的,不过还要看sm的版本,上面的代码ps1.0是不支持的,但2.0以上就可以了
#8
SM4 和 5 都支持循环和嵌套 而且不仅仅支持嵌套 还能指定嵌套次数 不仅仅提供分支流程 还支持同时运行分支最后根据结果采用那个分支。
#9
#10
一直用s_m2、3的路过。。
#11
俺觉得Shader中不支持的应当是递归
#12
分支、循环跟shader版本有关。而且各个版本的寄存器数也是不一样的,分支多了寄存器也是个大问题。
#13
递归要看怎么写,简单的递归3.0以后也是支持的。
#1
应该支持的吧,难道我小白了?
#2
跟你的显卡有关;
不知楼主什么环境,或许与你的编译设置也有关;
好像只是model 1.X不支持吧;你在支持model 3.0的显卡上试试.
不知楼主什么环境,或许与你的编译设置也有关;
好像只是model 1.X不支持吧;你在支持model 3.0的显卡上试试.
#3
这样可以的吗?
#4
if嵌套?
#5
shader mode 3.0 以后简单语法跟C++基本上一样,lz说的完全可以实现
#6
这个本来就支持的 -- b 看看你的代码 = =
#7
float4x4 WorldViewProj : WorldViewProjection;
float4 mainVS(float3 pos : POSITION) : POSITION{
return mul(float4(pos.xyz, 1.0), WorldViewProj);
}
float4 mainPS(float2 texCoord : TEXCOORD0) : COLOR {
if (texCoord.x > 1.f)
return float4(1, 0, 0, 0);
else if (texCoord.x > 0.5)
{
if (texCoord.x > 0)
return float4(0, 1, 0, 0);
else
return float4(0, 0, 1, 0);
}
else
return float4(1.0, 1.0, 1.0, 1.0);
}
technique technique0 {
pass p0 {
VertexShader = compile vs_2_0 mainVS();
PixelShader = compile ps_2_0 mainPS();
}
}
比如这样是可以的,不过还要看sm的版本,上面的代码ps1.0是不支持的,但2.0以上就可以了
#8
SM4 和 5 都支持循环和嵌套 而且不仅仅支持嵌套 还能指定嵌套次数 不仅仅提供分支流程 还支持同时运行分支最后根据结果采用那个分支。
#9
#10
一直用s_m2、3的路过。。
#11
俺觉得Shader中不支持的应当是递归
#12
分支、循环跟shader版本有关。而且各个版本的寄存器数也是不一样的,分支多了寄存器也是个大问题。
#13
递归要看怎么写,简单的递归3.0以后也是支持的。