📄 bumpref.c
字号:
GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER2_NV, GL_RGB, GL_VARIABLE_D_NV, GL_SPARE1_NV/* input */, GL_UNSIGNED_INVERT_NV, GL_RGB /* component usage */); // combiner stage 3 // spare0 = expand(col0) . expand(tex1); // spare1 = expand(col1) . expand(tex1); glCombinerOutputNV(GL_COMBINER3_NV, GL_RGB, GL_SPARE0_NV, GL_SPARE1_NV, GL_DISCARD_NV /* discard */, GL_NONE /* scale */, GL_NONE /* bias */, GL_TRUE /* dotprod ab */, GL_TRUE /* dotprod cd */, GL_FALSE /* sum discarded anyway */); glCombinerInputNV(GL_COMBINER3_NV, GL_RGB, GL_VARIABLE_A_NV, GL_PRIMARY_COLOR_NV/* input */, GL_SIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER3_NV, GL_RGB, GL_VARIABLE_B_NV, GL_TEXTURE1_ARB/* input */, GL_EXPAND_NORMAL_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER3_NV, GL_RGB, GL_VARIABLE_C_NV, GL_SECONDARY_COLOR_NV/* input */, GL_SIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER3_NV, GL_RGB, GL_VARIABLE_D_NV, GL_TEXTURE1_ARB/* input */, GL_EXPAND_NORMAL_NV, GL_RGB /* component usage */); // combiner stage 4 // spare1 = unsigned(spare1) * unsigned(spare1); glCombinerOutputNV(GL_COMBINER4_NV, GL_RGB, GL_SPARE1_NV, GL_DISCARD_NV,/* discard 2nd prod */ GL_DISCARD_NV /* discard sum */, GL_NONE /* scale */, GL_NONE /* bias */, GL_FALSE /* dotprod ab */, GL_TRUE /* discarded anyway */, GL_FALSE /* sum discarded anyway */); glCombinerInputNV(GL_COMBINER4_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE1_NV/* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER4_NV, GL_RGB, GL_VARIABLE_B_NV, GL_SPARE1_NV/* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); // combiner stage 5 // spare1 = unsigned(spare1) * unsigned(spare1); glCombinerOutputNV(GL_COMBINER5_NV, GL_RGB, GL_SPARE1_NV, GL_DISCARD_NV,/* discard 2nd prod */ GL_DISCARD_NV /* discard sum */, GL_NONE /* scale */, GL_NONE /* bias */, GL_FALSE /* dotprod ab */, GL_TRUE /* discarded anyway */, GL_FALSE /* sum discarded anyway */); glCombinerInputNV(GL_COMBINER5_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER5_NV, GL_RGB, GL_VARIABLE_B_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); // combiner stage 6 // spare1 = unsigned(spare1) * unsigned(spare1); glCombinerOutputNV(GL_COMBINER6_NV, GL_RGB, GL_SPARE1_NV, GL_DISCARD_NV,/* discard 2nd prod */ GL_DISCARD_NV /* discard sum */, GL_NONE /* scale */, GL_NONE /* bias */, GL_FALSE /* dotprod ab */, GL_TRUE /* discarded anyway */, GL_FALSE /* sum discarded anyway */); glCombinerInputNV(GL_COMBINER6_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER6_NV, GL_RGB, GL_VARIABLE_B_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); // combiner stage 7 // spare1 = unsigned(spare1) * unsigned(spare1); glCombinerOutputNV(GL_COMBINER7_NV, GL_RGB, GL_SPARE1_NV, GL_DISCARD_NV,/* discard 2nd prod */ GL_DISCARD_NV /* discard sum */, GL_NONE /* scale */, GL_NONE /* bias */, GL_FALSE /* dotprod ab */, GL_TRUE /* discarded anyway */, GL_FALSE /* sum discarded anyway */); glCombinerInputNV(GL_COMBINER7_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); glCombinerInputNV(GL_COMBINER7_NV, GL_RGB, GL_VARIABLE_B_NV, GL_SPARE1_NV /* input */, GL_UNSIGNED_IDENTITY_NV, GL_RGB /* component usage */); // final_product = const0 * spare1; glFinalCombinerInputNV(GL_VARIABLE_E_NV, GL_SPARE1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB); glFinalCombinerInputNV(GL_VARIABLE_F_NV, GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB); glFinalCombinerInputNV(GL_VARIABLE_D_NV, GL_E_TIMES_F_NV,// GL_ZERO, /* dont use specular */ GL_UNSIGNED_IDENTITY_NV, GL_RGB); // out.rgb = spare0 * const1 + final_product; glFinalCombinerInputNV(GL_VARIABLE_A_NV, GL_SPARE0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB); glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_CONSTANT_COLOR1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB); glFinalCombinerInputNV(GL_VARIABLE_C_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);/* glFinalCombinerInputNV(GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);*/ /* already set by final product */ glFinalCombinerInputNV(GL_VARIABLE_G_NV, GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA);#endif glEndList(); bumpref.normalmap_bind = bump_create_bumpmap( map_name, strength ); /* default values */ bumpref.bump_light[0] = 0.0; bumpref.bump_light[1] = 0.0; bumpref.bump_light[2] = 0.0; bumpref.bump_diff_col[0] = 0.5; bumpref.bump_diff_col[1] = 0.0; bumpref.bump_diff_col[2] = 0.0; bumpref.bump_diff_col[3] = 1.0; bumpref.bump_spec_col[0] = 0.8; bumpref.bump_spec_col[1] = 0.8; bumpref.bump_spec_col[2] = 0.8; bumpref.bump_spec_col[3] = 1.0; bumpref.init=1; return(bumpref);#endif}void bump_set_light( BumpRefType * bumpref, float x, float y, float z ){#ifdef USE_NV_BUMPREF bumpref->bump_light[0]=x; bumpref->bump_light[1]=y; bumpref->bump_light[2]=z; glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 9, bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2], 1.0); /* some light pos */#endif}void bump_set_diff( BumpRefType * bumpref, float r, float g, float b ){#ifdef USE_NV_BUMPREF bumpref->bump_diff_col[0]=r; bumpref->bump_diff_col[1]=g; bumpref->bump_diff_col[2]=b; bumpref->bump_diff_col[3]=1.0; glCombinerParameterfvNV(GL_CONSTANT_COLOR0_NV, bumpref->bump_diff_col);#endif}void bump_set_spec( BumpRefType * bumpref, float r, float g, float b ){#ifdef USE_NV_BUMPREF bumpref->bump_spec_col[0]=r; bumpref->bump_spec_col[1]=g; bumpref->bump_spec_col[2]=b; bumpref->bump_spec_col[3]=1.0; glCombinerParameterfvNV(GL_CONSTANT_COLOR0_NV, bumpref->bump_spec_col);#endif}void bump_use( BumpRefType * bumpref ){#ifdef USE_NV_BUMPREF/* double sin_,cos_; static double phi=0.0;*/// glCombinerParameteriNV(GL_NUM_GENERAL_COMBINERS_NV,8); glCallList(bumpref->bumpref_list); glEnable(GL_REGISTER_COMBINERS_NV); glDisable(GL_TEXTURE_SHADER_NV); glEnable(GL_VERTEX_PROGRAM_NV); {/* float const0[4]={0.5,0.5,0.5,1.0}; float const1[4]={0.0,0.0,0.0,1.0};*/ glCombinerParameterfvNV( GL_CONSTANT_COLOR0_NV, bumpref->bump_spec_col ); glCombinerParameterfvNV( GL_CONSTANT_COLOR1_NV, bumpref->bump_diff_col ); } DPRINTF("light=%f %f %f\n", bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2]); glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 9, bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2], 1.0); /* some light pos */ /* normalmap to tex1 */ glActiveTextureARB(GL_TEXTURE1_ARB); glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glBindTexture(GL_TEXTURE_2D, bumpref->normalmap_bind); glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glPolygonOffset( 0.0, -2.0 ); glEnable( GL_POLYGON_OFFSET_FILL );#endif}void bump_restore(){#ifdef USE_NV_BUMPREF glDisable(GL_REGISTER_COMBINERS_NV); glDisable(GL_TEXTURE_SHADER_NV); glDisable(GL_VERTEX_PROGRAM_NV);/* glActiveTextureARB(GL_TEXTURE3_ARB); glDisable(GL_TEXTURE_CUBE_MAP_ARB); glDisable(GL_TEXTURE_2D); glActiveTextureARB(GL_TEXTURE2_ARB); glDisable(GL_TEXTURE_CUBE_MAP_ARB); glDisable(GL_TEXTURE_2D);*/ glActiveTextureARB(GL_TEXTURE1_ARB);// glDisable(GL_TEXTURE_CUBE_MAP_ARB); glDisable(GL_TEXTURE_2D); glActiveTextureARB(GL_TEXTURE0_ARB);// glDisable(GL_TEXTURE_CUBE_MAP_ARB); glEnable(GL_TEXTURE_2D); glActiveTextureARB(GL_TEXTURE0_ARB); glDisable( GL_POLYGON_OFFSET_FILL );#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -