minib3dext command help

BlitzMax Forums/MiniB3D Module/minib3dext command help

Spacechimp(Posted 2008) [#1]
I am currently experimenting with minib3dext041. It is pretty neat stuff. I am however struggling with the lack of clear documentation. I have a few questions regarding some commands. I am currently struggling with what the heck these ones do:

SetAD1
SetAD2
SetAD3
SetAD4

SetAF1
SetAF2
SetAF3
SetAF4

SetAS1
SetAS2
SetAS3
SetAS4

SetM2
SetM3
SetM4

SetUF1
SetUF2
SetUF3
SetUF4

SetUI1
SetUI2
SetUI3
SetUI4


I know its something to do with shaders, meshes, or brushes... er something. Any hints would be appreciated.

Currently the best documentation I can find on minib3dext041 is here: http://www.minib3d.com/doku.php?id=start:commands

If there is more in-depth documentation laying around, could someone please let me know? Thank you!


klepto2(Posted 2008) [#2]
Hi, these commands belong to the shader pipeline and are for communicating with the shader itself. In a shader you can have user defined variables, like float values or textures etc. With these commands you can set these values from within your application.

the last number behind these commands is related to the number of dimensions the shader variable has.

UF = Uniform Float
UI = uniform int
M = Matrix (2*2,3*3,4*4)
AF = attribute Float

etc.

The new Shader system is much clearer and easier to use. But because I have new job which is currently very time consuming i have trouble to get the new version ready. At the moment I try to glue everything together and build a ready version to release next weekend.

here is a simple shader exsample how it can be done with the new version:

Type TSimpleBumpMap Extends TMaterialPlugin
	
	Field shader:TShaderMaterial
	Field light:Tlight
	
	Method TurnOn(surf:TSurface = Null) 	
		shader.TurnOn(surf)
	End Method 
	
	Method TurnOff()
		shader.TurnOff()
	End Method
	
	Method UpdateData() 
		If Light Then shader.SetParameter3F("lightpos" , EntityX(Light) , EntityY(light) , EntityZ(Light) ) 
	End Method
	
	Method CreateSimpleBumpMap:TSimpleBumpMap() 
		shader = New TShaderMaterial.CreateShaderMaterial("BumpMap")
		shader.AddShader("bump.vert" , "bump.frag") 
		shader.ProgramAttriBegin()
		shader.SetParameter1F("invRadius",0.001)
		shader.SetParameter3F("vTangent" , 1.0 , .0 , .0)
		shader.SetParameter1F("scale",1.0)
		shader.ProgramAttriEnd()
		Return Self
	End Method
	
	Method SetColorMap(tex:TTexture)
		shader.ProgramAttriBegin()
		shader.AddSampler2D("colorMap",0,tex)
		shader.ProgramAttriEnd()
	End Method
	
	Method SetNormalMap(tex:TTexture)
		shader.ProgramAttriBegin()
		shader.AddSampler2D("normalMap",1,tex)
		shader.ProgramAttriEnd()
	End Method
	
	Method SetLightRange(Range:Float)
		shader.ProgramAttriBegin()
		shader.SetParameter1F("invRadius",1.0/Range)
		shader.ProgramAttriEnd()
	End Method
	
	Method SetTextureScale(Scale:Float)
		shader.ProgramAttriBegin()
		shader.SetParameter1F("scale",1.0/Scale)
		shader.ProgramAttriEnd()
	End Method
	
	Method SetLight(Light:TLight) 
		Self.Light = Light
	End Method
		
End Type



Spacechimp(Posted 2008) [#3]
Thank you very much for the quick response!