bmap_process (BMAP* bmDest, BMAP* bmSrc, MATERIAL* mtl);

Füllt eine Bitmap mittels einer Pixelshader-Function aus einer Quell-Bitmap. Diese Funktion ist sehr schnell auf Shader-Hardware und kann jeden Frame ohne viel Einfluss auf die Framerate aufgerufen werden. Sie kann für die Nachbearbeitung von Bildern oder zum Erstellen und Aktualisieren prozeduraler Texturen in Echtzeit genutzt werden. Mit einer Floating Point Zieltextur kann diese Funktion auch verwendet werden, um Berechnungen direkt auf der GPU auszuführen.

Parameters:

bmDest Ziel-Bitmap.
bmSrc Quell-Bitmap, oder NULL zum Erzeugen einer rein prozeduralen Textur.
mtl Material mit einem 2D-Shader zur Bilderzeugung.

Speed:

Medium

Version:

A8.00  C 

Remarks

Example:

// convert an image to sepia colors and display it on the screen

PANEL* panTarget = { bmap = "#256x256x24"; flags = SHOW; } // target bmap
BMAP* bmSrc = "image.tga"; // source bmap

MATERIAL* mtlSepia = { // sepia coloring pixel shader
  effect = "
  Texture TargetMap; // source bitmap
  sampler2D smpSrc = sampler_state { texture = <TargetMap>; };
          
  float4 SepiaColor1 = {0.2, 0.05, 0.0, 1.0};   
  float4 SepiaColor2 = {1.0, 0.9,  0.5, 1.0}; 

  float4 process_sepia(float2 Tex: TEXCOORD0): COLOR 
  {
    float4 Color = tex2D( smpSrc, Tex.xy);
    float sepiaLerp = dot( float3(0.3, 0.59, 0.11), Color);
    return lerp(SepiaColor1,SepiaColor2,sepiaLerp);
  }

  technique Sepia {
    pass p1 {
      AlphaBlendEnable = false;	
      PixelShader = compile ps_2_0 process_sepia();
    }
  }   
  ";
}

function main()
{
  wait(1); // until DirectX device is opened
  bmap_process(panTarget.bmap,bmSrc,mtlSepia);
}

See also:

bmap_blit, bmap_fill

► latest version online