introduction to vrt - it.uu.se€¦ · interactive graphical systems introduction to vrt...

37
Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson [email protected]

Upload: others

Post on 05-Jun-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Introduction to VRT

Interactive Graphical Systems HT2007

Lars [email protected]

Page 2: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #2Uppsala universitet

Implementation levels

Hardware

Computer Graphics lib.

Scene Graph lib.

Application

Page 3: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #3Uppsala universitet

Hardware

E.g. ATI, nVIDIA, Matrox• A driver is used to communicate with the graphic card

Hardw.

CG-lib.

SG-lib.

App.

Page 4: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #4Uppsala universitet

Computer Graphic libraries

E.g. OpenGL, DirectX• Provides a low-level programming interface• Functions for drawing graphics, e g triangles and

lines, etc.

What kind of functionality do we want?• Easier to understand than OpenGL, etc.• More abstract programming interface• Specialized for “Interactive Graphical Systems”• Easy object loaders• …

Hardw.

CG-lib.

SG-lib.

App.

Page 5: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #5Uppsala universitet

Scene-Graph libraries

Also known as 3D engines

Provides functions for• loading, rendering, manipulating geometry• material, texture and light source management• collision detection, level of detail (LOD) rendering

Scene is represented using a graph, usually a directed a-cyclic graphor a tree

Hardw.

CG-lib.

SG-lib.

App.

Page 6: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #6Uppsala universitet

Application programming

Games, Simulations, Visualizations

Hardw.

CG-lib.

SG-lib.

App.

Page 7: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #7Uppsala universitet

Application programming

Counter Strike: Source

Hardw.

CG-lib.

SG-lib.

App.

ATI, nVIDIA, …

Valve Source Engine

DirectX 9

Page 8: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #8Uppsala universitet

Application programming

SAS flight academy

Hardw.

CG-lib.

SG-lib.

App.

ATI Tech.

CAE Tropos

Page 9: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #9Uppsala universitet

Scene-graph libraries (cont.)Models often hierarchical• Animals• Planet systems• Vehicles

Each node has• orientation relative to parent• geometry• material• color• etc...

body

upper arm

lower arm

upper leg

lower leg

headHardw.

CG-lib.

SG-lib.

App.

Page 10: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #10Uppsala universitet

Scene-graph design issuesCameras, lights and animation do not cleanly fit in

camera light

animation

camera

light

animation

(OpenGL & VRT)

Page 11: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #11Uppsala universitet

Scene-graph design issues (cont.)Stored files could represent:• Simple geometry

Wavefront (.obj)• Whole scene

VRML3D studio

Standard or native file format?Which programming language to use?Function and data-type naming conventions

Page 12: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #12Uppsala universitet

Scene-graph pros & cons

+• Provides better abstraction• Enables more rapid application development

-• Less flexible and lower performance • Slower propagation of new hardware inventions

Page 13: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #13Uppsala universitet

Other scene-graph librariesWorld Toolkit • Developed by Sense8 • Different file formats;

Wavefront, VRML, etc ...

Dive• Developed by SICS• Scene graph distributed

transparently over network

Java3D• Java• Developed by Sun

Microsystems

Page 14: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #14Uppsala universitet

Virtual Reality Toolkit (VRT)A scene-graph graphics library Developed by Stefan Seipel in 1997UU-local toolkit, but similar to other scene graph libsUsed for 3D modeling and simulationCallback-basedStill being developedMainly used at the department

Page 15: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #15Uppsala universitet

Virtual Reality Toolkit (cont.)

Built as an interface on top of OpenGLVRT allows use of native OpenGL functionsVRT uses OpenGL’s hardware assisted graphics accelerationApplication programmers interface (API) in CNot object oriented

Page 16: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #16Uppsala universitet

Hierarchical modeling

Example: (extremely) simple robot• Simply 3 objects connected to each other hierarchically

Robot

Nodes connected hierarchically in the scene-graph

Arm1

Arm2

Geometry (shared by all nodes)

Page 17: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #17Uppsala universitet

Explicit geometry representations

Organization of geometry data:

v1

v2v3

v4

v5

v6

v7

p1p2

p3

p4

xz

y

x,y,z,...u,v1x,y,z,...u,v2x,y,z,...u,v3x,y,z,...u,v4x,y,z,...u,v5x,y,z,...u,v6

x,y,z,...u,vn1 4 { 1, 2, 3, 4 }2 3 { 6, 4, 3 }3 3 { 5, 4, 6 }4 4 { 3, 2, 7, 6 }

k 3 { l, m, n }

Vertex List

Polygon List

Vertex Index Vertex DataCartesian CoordinatesNormal VectorsTexture CoordinatesColor Values

Polygon IndexNumber of Vertices

List of Vertex Indices

{ ......... }

{ ......... }{ ......... }{ ......... }{ ......... }

Other data e.g. Texture ReferenceObjects reference frame

Page 18: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #18Uppsala universitet

Implicit geometry representations

Organization of geometry data:

v1

v2

v3

v4

v5

v6

v7

x

y

Objects reference frame

geom = VRT_Box(1.0f, 1.0f, 1.0f);(float dx, float dy, float dz)

zdx dz

dy

Page 19: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #19Uppsala universitet

robot = VRT_NodeNew(VRT_RootNode(), "Robot");arm1 = VRT_NodeNew(robot, "Lower arm");arm2 = VRT_NodeNew(arm1, "Upper arm");

geom = VRT_Box(0.05f, 0.3f, 0.05f);VRT_GeometrySetColor(geom, 255, 10, 255, 255);VRT_GeometrySetShadingModel(geom, VRT_SM_SHADE);

VRT_NodeSetGeometry(robot, geom);VRT_NodeSetGeometry(arm1, geom);VRT_NodeSetGeometry(arm2, geom);

VRT_NodeScale(arm1, 0.8f, 1.0f, 0.8f);VRT_NodeScale(arm2, 0.8f, 1.0f, 0.8f);VRT_NodeTranslate(arm1, 0.0f, 0.28f, 0.0f);VRT_NodeTranslate(arm2, 0.0f, 0.28f, 0.0f);

Creating the Model Hierarchy

Robot

Arm1

Arm2

XZ

Y

Scen

e gr

aph

Scen

e

Page 20: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #20Uppsala universitet

int main(int argc, char *argv[]){

VRT_Init(&argc, argv); /* initialize VRT Toolkit */VRT_SetDisplay(0); /* choose a display type, usually default */build_scene(); /* build up your own scenery */

/* install a user-define callback function */VRT_SetCallback((VRT_HookPtr)SimulationLoop);

/* decide for background color */VRT_SetClearColor(0.7f,0.7f,8.0f,0.5f);

/* install and set a virtual camera */VRT_SetDefaultCamera(6.0, 6.0, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);VRT_SetCameraFieldOfView(15.0f);

/* start the simulation loop */VRT_SimulationLoop();/* shut down simulation server */VRT_Close();return 0;

}

Page 21: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #21Uppsala universitet

static VRT_HookPtr SimulationLoop(VRT_CB_MSG *msg) /* Create the main (infinite) loop */{

switch (msg->id) /* Handle keyboard events */{case VRT_MSG_KEYBOARD_DOWN:

{// Switch camera settingsif (msg->arg1 == 'x'){

VRT_SetDefaultCamera(6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); break;}if (msg->arg1 == 'y'){

VRT_SetDefaultCamera(0.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0); break;}if (msg->arg1 == 'z'){

VRT_SetDefaultCamera(0.0, 0.0, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); break;}

}default:

break;}return 0;

}

Page 22: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #22Uppsala universitet

VRT Overview

A more detailed overview is available here:

http://www.it.uu.se/edu/course/homepage/igs/ht06/labs/env/VRT_Programmers_Manual.chm

Page 23: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #23Uppsala universitet

VRT Basic structuresVRT_Context• Holds information about the current VRT “universe”.VRT_Node• A placeholder in the scene graph that contains a transformation matrix

relative to its parent and can also hold a geometry and links to a number of children nodes.

VRT_Geometry• A set of polygons that build up an object in the scene. Must be linked to a

node to be visible. Can also have color and other attributes.VRT_Polygon• A set of vertices and a normal vector, that build up a surface in a

geometry. Can also have color on polygon level.

Page 24: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #24Uppsala universitet

VRT Basic structures (cont.)VRT_Vertex• A point in the local coordinate system of a geometry. Can also

have a normal vector on vertex level (for smooth shading) and texture coordinates.

VRT_Htx• Handle to a texture object. VRT_Camera• Representing the observers view of the scene. Contains

position, direction and field of view (fov). There can be several cameras in VRT, but only one can be active.

VRT_Light• Represents a light source in the scene. Contains position,

direction, colors, intensity and other attributes.

Page 25: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #25Uppsala universitet

VRT General functionsVRT initialization / close functions:

void VRT_Init (&argc, argv)void VRT_Close ()int VRT_SetDisplay (int displayMode)

void VRT_SetCallback (VRT_HookPtr hook)

Start / exit simulation loop: void VRT_SimulationLoop ()void VRT_ExitSimulationLoop ()

Page 26: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #26Uppsala universitet

VRT General functions (cont.)Some other useful functions:

void VRT_PrintSceneGraph ()float VRT_GetFrameRate ()float VRT_GetSimulationTime ()

VRT_Node *vRT_CreateWorldReferenceFrame()

Page 27: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #27Uppsala universitet

VRT Node functionsCreate / delete node:

VRT_Node * VRT_NodeNew (VRT_Node *parent, char *name)int VRT_NodeDelete (VRT_Node *anode)

Show / hide node:int VRT_NodeSwitchOff (VRT_Node *anode)

int VRT_NodeSwitchOn (VRT_Node *anode)

Connect geometry to node:int VRT_NodeSetGeometry (VRT_Node *anode, VRT_Geometry *geom)

Page 28: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #28Uppsala universitet

VRT Node functions (cont.)Transform a node:• relative to the parent node

int VRT_NodeTranslate (VRT_Node *anode, float tx, float ty, float tz)

int VRT_NodeRotate (VRT_Node *anode, float rx, float ry, float rz)int VRT_NodeScale (VRT_Node *anode, float sx, float sy, float sz)

• absolute transformationint VRT_NodeSetTranslation (VRT_Node *anode, float tx,float ty,float tz)

int VRT_NodeSetRotation (VRT_Node *anode, float rx, float ry, float rz)int VRT_NodeSetScale (VRT_Node *anode, float sx, float sy, float sz)

Page 29: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #29Uppsala universitet

VRT Geometry functions

Create / delete geometry:VRT_Geometry * VRT_GeometryNew ()int VRT_GeometryDelete (VRT_Geometry *geom)

Add vertex / polygons to geometry:int VRT_GeometryAddVertex (VRT_Geometry *geom, float x, float y,

float z, float nx, float ny, float nz, float u, float v)

VRT_HPlg VRT_GeometryNewTriangle (VRT_Geometry *geom, int v1, intv2, int v3)

VRT_HPlg VRT_GeometryNewQuad (VRT_Geometry *geom, int v1, int v2, int v3, int v4)

VRT_HPlg VRT_GeometryNewTriangleStrip (VRT_Geometry *geom, int nv, int *vi)

Page 30: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #30Uppsala universitet

VRT Geometry functions (cont.)

Set geometry attributes:int VRT_GeometrySetColor (VRT_Geometry *geom, int r, int g, int b,

int alpha)int VRT_GeometrySetMaterial (VRT_Geometry *geom, float *material)int VRT_GeometrySetTexture (VRT_Geometry *geom, VRT_Htx texture)

int VRT_GeometrySetShadingModel (VRT_Geometry *geom, intshadingmodel)

int VRT_GeometryFlipNormals (VRT_Geometry *geom)int VRT_GeometryCalcVertexNormals (VRT_Geometry *geom)

Page 31: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #31Uppsala universitet

VRT Geometry functions (cont.)

Some predefined VRT_Geometry objects:VRT_Geometry *VRT_Pyramid ()VRT_Geometry *VRT_Cube (float size)VRT_Geometry *VRT_Box (float dx, float dy, float dz)VRT_Geometry *VRT_Plate (float size, char *tname)VRT_Geometry *VRT_Cone (float tr, float br, float height,

int resolution)VRT_Geometry *VRT_Sphere (float diameter, int resolution)VRT_Geometry *VRT_ConstantPipe (float radius, int resolution,

int numsamples, float *controls)VRT_Geometry *VRT_ModulatedPipe (int resolution, int

numsamples, float *controls, float *radius)

Page 32: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #32Uppsala universitet

VRT Geometry functions (cont.)Load geometry from object file:

VRT_Geometry *VRT_LoadPLG (char *file_name)VRT_Geometry *VRT_LoadOBJ (char *file_name)

Page 33: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #33Uppsala universitet

VRT Polygon functions

Set attributes for individual polygons:int VRT_PolygonSetShadingModel (VRT_HPlg poly, int rendermode)

int VRT_PolygonGetShadingModel (VRT_HPlg poly, int *rendermode)

int VRT_PolygonSetColor (VRT_HPlg poly, int r, int g, int b, int a)

int VRT_PolygonGetColor (VRT_HPlg poly, int *r,int *g,int *b,int *a)

int VRT_PolygonSetTexture (VRT_HPlg poly, VRT_Htx texture)

VRT_Htx VRT_PolygonGetTexture (VRT_HPlg poly)

Page 34: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #34Uppsala universitet

VRT Camera functions

Handle the default camera:void VRT_ResetDefaultCamera ()void VRT_SetDefaultCamera (float ex, float ey, float ez,

float cx, float cy, float cz, float ux, float uy, float uz)void VRT_GetDefaultCamera (float *ex, float *ey, float *ez,

float *cx, float *cy, float *cz, float *ux, float *uy, float *uz)

int VRT_AttachCameraToNode (VRT_Node *node)void VRT_SetCameraFieldOfView (float fov)

There are also functions for handling general, user defined cameras.

Page 35: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #35Uppsala universitet

VRT Light functionsCreate / delete lights:

VRT_Light *VRT_LightNew (int light_type)int VRT_LightDelete (VRT_Light *light)

Switch lights on / off:int VRT_LightSwitchOn (VRT_Light *light)int VRT_LightSwitchOff (VRT_Light *light)

Set light attributes:int VRT_LightSetColors (VRT_Light *light, float *colors)int VRT_LightSetAttenuation (VRT_Light *light, float

*attenuation)int VRT_LightSetType (VRT_Light *light, int light_type)

Page 36: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #36Uppsala universitet

VRT Light functions (cont.)

Light positioning functions:int VRT_LightSetPosition (VRT_Light *light, float x, float y, float z)

int VRT_LightSetDirection (VRT_Light *light, float dx, float dy, float dz)int VRT_LightSetPositionNode (VRT_Light *light, VRT_Node *nposition)

int VRT_LightSetTargetNode (VRT_Light *light, VRT_Node *ntarget)

Page 37: Introduction to VRT - it.uu.se€¦ · Interactive Graphical Systems Introduction to VRT Interactive Graphical Systems HT2007 Lars Pettersson lwp@it.uu.se

Interactive Graphical Systems

Informationsteknologi | 2007-08-28 | #37Uppsala universitet

VRT Texture functionsCreate / load / delete texture:

VRT_Htx VRT_LoadTexture (char *filename)VRT_Htx VRT_CreateRGBATexture (int sx, int sy, char *texels)

int VRT_DeleteTexture (VRT_Htx *texture)

Replace texture:int VRT_ReplaceRGBATexture (VRT_Htx *texture, intsx, int sy, char *texels)

Set texture attributes:void VRT_SetTextureModulationMode (inttexture_modulation)