Class BL_Shader -- Blender Game Engine 2.49b



 
  







setUniformDef

setUniformDef(name, enum)

Used to bridge the gap between Blender and OpenGL GLSL  with predefined functions.

name:
Type:  string

enum:
Type:  (predefined functions)

[mat4] MODELVIEWMATRIX
[mat4] MODELVIEWMATRIX_TRANSPOSE
[mat4] MODELVIEWMATRIX_INVERSE
[mat4] MODELVIEWMATRIX_INVERSETRANSPOSE
[mat4] MODELMATRIX
[mat4] MODELMATRIX_TRANSPOSE
[mat4] MODELMATRIX_INVERSE
[mat4] MODELMATRIX_INVERSETRANSPOSE
[mat4] VIEWMATRIX
[mat4] VIEWMATRIX_TRANSPOSE
[mat4] VIEWMATRIX_INVERSE
[mat4] VIEWMATRIX_INVERSETRANSPOSE
[vec3] CAM_POS
[float] CONSTANT_TIMER

Sample Code

# define the main part of the program
def main():

# get the current scene
scene = GameLogic.getCurrentScene()

# get a list of the objects in the scene
objList = scene.objects
 
# Get the object you want to use
obj =  objList['OBCube']
 
# Only one mesh on this Cube
mesh = obj.meshes[0]
 
# only one material on this mesh
mat = mesh.materials[0]
 
# Using Blender GLSL Materials or Blender Multitexture Materials?
if hasattr( mat, 'getMaterialIndex') == True: 
     
#Get shader envelope
shader = mat.getShader()
     
# shader envelope created?
if shader != None:
     
# set the shader
shader.setSource(VertexProgram, FragmentProgram, True)

# set enum def
enum = GameLogic.MODELVIEWMATRIX_INVERSE
         
# change Blender matrix to OpenGl
shader.setUniformDef('mvi', enum)
                     
####### end of main program def
 
VertexProgram = """


// matrix transform from main part of program

uniform mat4 mvi;


// light vector being passed to fragment program

varying vec3 lightVec;


void main()

{

// Convert light position 

lightVec = vec3((mvi * gl_LightSource[0].position).xyz );


// Normalize it

lightVec = normalize(lightVec);


// Required OpenGL glsl code

gl_Position = ftransform();

}


"""

FragmentProgram = """


// From VertexProgram

varying vec3 lightVec;


void main()

{

// color to green

vec3 color = vec3(0.0,1.0,0.0);


// transform with lightVec

color = color * lightVec;

 

 // Use it

 gl_FragColor = vec4(color, 1.0);

}


"""
# Run program
main()

 
Game developers can use the game engine to create casual video games, first and third person shooters, role playing games, racing simulations and more. The game engine can be used to make both 2D games and 3D games.  Beginning game developers will only need basic knowledge of game design and programming to create rich and complex game models with photo realistic textures to add detail to the graphics of the video game.  Today's games need more than good looking low polygon game models.  Use normal maps and photo realistic textures to create high quality game models.