
Это анализ нормали.
float deg=dot(input.viewVec,input.normal);
if(deg>0.9

{diffuse=float4(1,1,0,1);}
Причем как управлять позицией мне не ясно

Это анализ расстояния от пикселя в центре солнца
float3 sunpos=50*float3(0,1,0);
float3 pixpos=input.pos2.xyz;
float3 vecpixsun=sunpos-pixpos;
float dist=length(vecpixsun);
if(dist<4){diffuse=float4(1,1,0,1)}
И, да простит меня Мока, управление позицией элементарно, диаметр тоже легко изменить, ну и контур менее зависим от геометрии небосклона.