ps_select.fx

来自「about the basic GA in the VC++ using GPU」· FX 代码 · 共 84 行

FX
84
字号



float4 PS_SelCtr(float2 pos: TEXCOORD0) : COLOR
{ 
	float2 Tex = pos + float2(0.0019607843 , 0.0019607843);
	float SumFit = 0;
	float Fit[9];
	Fit[0] = tex2D(ColorMapSamplerFit,Tex + float2(-pw,ph)).r;
	Fit[1] = tex2D(ColorMapSamplerFit,Tex + float2(0,ph)).r;
	Fit[2] = tex2D(ColorMapSamplerFit,Tex + float2(pw,ph)).r;	
	Fit[3] = tex2D(ColorMapSamplerFit,Tex + float2(-pw,0)).r;
	Fit[4] = tex2D(ColorMapSamplerFit,Tex).r;
	Fit[5] = tex2D(ColorMapSamplerFit,Tex + float2(pw,0)).r;
	Fit[6] = tex2D(ColorMapSamplerFit,Tex + float2(-pw,-ph)).r;
	Fit[7] = tex2D(ColorMapSamplerFit,Tex + float2(0,-ph)).r;
	Fit[8] = tex2D(ColorMapSamplerFit,Tex + float2(pw,-ph)).r;
	for(int i = 0 ; i < 9 ; i++ )
	{
		SumFit += Fit[i];
	}	
	float2 Rpos = tex2D(ColorMapSamplerRand,Tex + offset1).gb;
	float pick = tex2D(ColorMapSamplerRand,Rpos * offset2).r;
	float sum = 0;
	for(i = 0 ; (sum <= pick) &&(i < 9 ) ; i++)
	{
		sum += Fit[i] / SumFit;
	}
	i = i - 1;
	if(i == 0)
		return float4((Tex + float2(-pw,ph)), 0 , 0);
	else if( i == 1)
		return float4((Tex + float2(0,ph)), 0 , 0);
	else if( i == 2)
		return float4((Tex + float2(pw,ph)), 0 , 0);
	else if( i == 3)
		return float4((Tex + float2(-pw,0)), 0 , 0);
	else if( i == 4)
		return float4(Tex, 0 , 0);
	else if( i == 5)
		return float4((Tex + float2(pw,0)), 0 , 0);
	else if( i == 6)
		return float4((Tex + float2(-pw,-ph)),0 , 0);
	else if( i == 7)
		return float4((Tex + float2(0,-ph)), 0 , 0);
	else 
		return float4((Tex + float2(pw,-ph)), 0 , 0);
 
}


technique TShader_SelCtr
{
    pass P0
    {
		Sampler[0] = (ColorMapSamplerRand);
        Sampler[1] = (ColorMapSamplerFit);	       
        PixelShader  = compile ps_3_0 PS_SelCtr();        
    }
    
}


float4 PS_Sel(float2 pos: TEXCOORD0) : COLOR
{ 
	float2 Tex = pos + float2(0.0019607843 , 0.0019607843);
	
	float2 SelPos = tex2D(ColorMapSamplerSelCtr,Tex).rg;	
	
	return tex2D(ColorMapSamplerGene,SelPos);
 
}


technique TShader_Sel
{
    pass P0
    {
		Sampler[0] = (ColorMapSamplerGene);
        Sampler[1] = (ColorMapSamplerSelCtr);	       
        PixelShader  = compile ps_3_0 PS_Sel();        
    }
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?