HLSL. Possible?

Blitz3D Forums/Blitz3D Userlibs/HLSL. Possible?

Hi,

B3D is a Dx7 engine. Well. It is possible to use the DX9 engine shader with an EXTERNAL DLL like this ?
Call_shader_DLL(Buffer_adr,width,height,depth,"pixel_shader_routine.fx")

Buffer_adr = Texture or Image buffer ;-)
JP

No, not its not.
As far as I know current cards backwardly support directx 7 however newer technology(especially the ASM on the pipe for shaders) is completely different. Basically we're limited to whatever DirectX 7(most of it anyways) was able to draw to the card. D3d 9/10 are completely different. So much between 7 and 9 is deprecated that it would be scary as hell to see if ANYTHING at the class library level were compatible.

How to use HLSL in a Picture Box with a external DLL ( VB6 exemple )
Sorry, french web site ;-)

http://www.vbfrance.com/codes/IMAGES-EFFETS-HLSL-SHADERS-DIRECTX_44113.aspx

JP

Hi,

One test of a "Post-Processing Pixel Shader"

Work well !!! ;-)

JP

The B3d test file

Graphics3D 800,600,32,2

Global hwnd    = SystemProperty ("AppHWND")

Global context% = ifx_Create(hwnd, 800,600, "shock.fx")

If context = 0 Then End

; technic shader routine
ifx_SetTechnique context, "t0"

; set the texture file texture
ifx_SetTexture   context, "diffuse", "test.bmp"

While Not KeyDown( 1 )

	ifx_SetFloat context, "time", Rnd(0.1,0.2)
	ifx_Render   context
	
	Flip
Wend

ifx_Destroy context

End 


The DELC file

;
 .lib "imagefx.dll"

 ifx_Create%(hwnd%,Width%,Height%,fxname$):"ifx_Create"
 ifx_Destroy(context%):"ifx_Destroy"
 ifx_Render(context%):"ifx_Render"
 ifx_PreRender(context%):"ifx_PreRender"
 ifx_PreRenderViewport(context%,X%,Y%,Width%,Height%):"ifx_PreRenderViewport"
 ifx_PostRender(context%):"ifx_PostRender"
 ifx_DestroyTexture(context%,texname$):"ifx_DestroyTexture"
 ifx_GetLastError(context%,buf$,size%):"ifx_GetLastError"
 ifx_GetGlobalLastError(buf$,size%):"ifx_GetGlobalLastError"

 ifx_SetTechnique(context%,Handle$):"ifx_SetTechnique"
 ifx_SetString(context%,Handle$,value$):"ifx_SetString"
 ifx_SetVector(context%,Handle$,X#,Y#,z#,w#):"ifx_SetVector"
 ifx_SetFloat(context%,Handle$,value#):"ifx_SetFloat"
 ifx_SetTexture(context%,Handle$,texname$):"ifx_SetTexture"
 ifx_SetInteger(context%,Handle$,value%):"ifx_SetInteger"

 ifx_SetColor(context%,Handle$,value%):"ifx_SetColor"



the Shader "shock.fx" file

texture diffuse;
float time;

sampler SamplerWaves = sampler_state
{ 	Texture   = (diffuse);

	MipFilter = NONE;
	MinFilter = NONE;
	MagFilter = NONE;
};

float4 pswaves(float2 inTexcoord : TEXCOORD0) : COLOR
{
	float normtime = time * 0.2f;
	return float4(tex2D(SamplerWaves, inTexcoord * 1.5f + float2(normtime*0.2f, normtime*0.13f) * 3.0f).rgb, 1.0f);
}

technique t0
{
	pass P0
	{
		pixelshader = compile ps_1_4 pswaves();
	}
}


imagefx.dll is your dll?

This looks interesting.

"imagefx.dll is your dll? "

No. It's from this french guy http://www.vbfrance.com/codes/IMAGES-EFFETS-HLSL-SHADERS-DIRECTX_44113.aspx

I'm just try to use this DLL with B3D.

JP

But isn't it slowly, when using GDI to read from Blitz3D?

Interesting!
But this does not work with RenderWorld of the Blitz3D :(