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

Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 20:42
antonio
При использовании shader model 3.0 можно использовать 32 временных регистра,
но есть потребность и возможность увеличить пределы используя #pragma profileoption.
В официальной справке приведен пример для текстур
#pragma profileoption MaxTexIndirections=256
а как это выглядит для регистров?

Re: Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 20:53
gnoblin
Я бы это не использовал :)

Re: Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 20:59
antonio
Я бы тоже не использовал. Есть вариант обойти?
Производительность в данном случае не принципиально.
Занимаюсь копипастом фракталов. :)
Синтаксис:
Используется glsl
// http://www.iquilezles.org/apps/shadertoy/ Shader Toy
Shader "Mandelbrot" {
        Properties {
                _TimeSpeed ("Time Speed", Float) = 1
                _X ("Scale X", Float) = 0.5
                _Y ("Scale Y", Float) = 0.5
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200

                CGPROGRAM
                #pragma surface surf Lambert vertex:vert
                #pragma target 3.0

                float _X;
                float _Y;
                   
                float _TimeSpeed;
               
                sampler2D tex0;
                sampler2D tex1;

                struct Input {
                        float2 uv_MainTex;
                        float t;
                };

                void vert (inout appdata_full v, out Input o) {
                        o.t=_Time.y*_TimeSpeed;
                }
               
                void surf (Input IN, inout SurfaceOutput o) {

                        float2 p = -1.0 + 2.0 * IN.uv_MainTex.xy / half2(_X,_Y);
                        p.x *= _X/_Y;

                        float zoo = .62+.38*sin(.1*IN.t);
                        float coa = cos( 0.1*(1.0-zoo)*IN.t );
                        float sia = sin( 0.1*(1.0-zoo)*IN.t );
                        zoo = pow( zoo,8.0);
                        float2 xy = float2( p.x*coa-p.y*sia, p.x*sia+p.y*coa);
                        float2 cc = float2(-.745,.186) + xy*zoo;

                        float2 z  = float2(0.0);
                        float2 z2 = z*z;
                        float m2;
                        float co = 0.0;
                        for( int i=0; i<24; i++ ) //Хотелось бы 256
                        {
                                z = cc + float2( z.x*z.x - z.y*z.y, 2.0*z.x*z.y );
                                m2 = dot(z,z);
                                if( m2>1024.0 ) break;
                                co += 1.0;
                                }
                        co = co + 1.0 - log2(.5*log2(m2));

                        co = sqrt(co/256.0);
                        half4 FragColor = half4( .5+.5*cos(6.2831*co+0.0),
                                                                 .5+.5*cos(6.2831*co+0.4),
                                                                 .5+.5*cos(6.2831*co+0.7),
                                                                 1.0 );

                        o.Albedo = FragColor.rgb;
                        o.Alpha = FragColor.a;
                }
                ENDCG
        }
        FallBack "Diffuse"
}
 

Re: Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 22:36
gnoblin
Я что-то фрактальное с shadertoy вроде копипастил, наверное забыл запостить.

С этим параметром может перестать работать на многих видеокартах :-w

Re: Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 23:05
antonio
Было дело копипастил ) Но не все
Это для себя. Меня в конечном итоге интересует Mandelbulb 3D fractal
с WebGL браузером у меня показывает (хотя конечно тормоза))
Mandelbulb.jpg

Re: Увеличение временных регистров?

СообщениеДобавлено: 17 дек 2010, 23:30
gnoblin
У меня браузер не показывает WebGL :(

Re: Увеличение временных регистров?

СообщениеДобавлено: 18 дек 2010, 00:54
antonio
Я себе для этого развлечения временно поставил Firefox4 )