Страница 1 из 1

Настоящие циклы и ветвления в SM 3.0

СообщениеДобавлено: 14 июн 2013, 10:42
waruiyume
Краем уха слышал, что это есть в SM 3.0. Их нужно как-то включат(директива компилятора) или в [unity 3D] это не работает?

Re: Настоящие циклы и ветвления в SM 3.0

СообщениеДобавлено: 14 июн 2013, 10:52
Guyver
#pragma target 3.0

http://docs.unity3d.com/Documentation/C ... grams.html

в 3й модели не только честные циклы .. там вроде как и ветвления честные и много лимитов снято.

Re: Настоящие циклы и ветвления в SM 3.0

СообщениеДобавлено: 14 июн 2013, 11:22
seaman
#pragma target 3.0
Циклы точно работают. Только сильно не разгуляться - легко выйти за максимальное количество операторов.

Re: Настоящие циклы и ветвления в SM 3.0

СообщениеДобавлено: 14 июн 2013, 11:48
waruiyume
Сферический в вакууме тест:
Синтаксис:
Используется glsl
Shader "Custom/Test" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
                #pragma target 3.0
                #pragma surface surf Lambert
                //#pragma only_renderers d3d9 opengl
                #pragma only_renderers d3d9

                sampler2D _MainTex;

                struct Input {
                        float2 uv_MainTex;
                };

                void surf (Input IN, inout SurfaceOutput o)
                {
                        half4 c = tex2D (_MainTex, IN.uv_MainTex);
                        o.Albedo = c.rgb;
                        for(int i=1; i<2; i++)
                        {
                                o.Albedo.r +=0.001;
                                if(o.Albedo.r>0.2)
                                {
                                        break;
                                }
                        }
                        o.Alpha = c.a;
                }
                ENDCG
        }
        //FallBack "Diffuse"
}
 

При условии (i<2)- асьма, 1502 строки, а при (i<50)- 1602--- цикл явно анролица.
Может, оно не работает в сурфейс шейдерах?