How to render . ive model file with two texture units using shader?

28 views
Skip to first unread message

mirr...@gmail.com

unread,
Jan 5, 2022, 3:55:09 AM1/5/22
to OpenSceneGraph Users
env is osg3.6.4
//Effect of the original
QQ图片20220105164601.jpg
// The following Shader render effect
QQ图片20220105164551.jpg
char ModelVertexShaderSource[] =
"#version 330 core\n"
"in vec4 osg_Vertex;\n"
"in vec4 osg_MultiTexCoord0;\n"
"in vec4 osg_MultiTexCoord1;\n"
"uniform mat4 osg_ModelViewProjectionMatrix; \n"
"out vec2 uv; \n"
"out vec2 uv1; \n"
" \n"
"void main() \n"
"{ \n"
"    gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex; \n"
"    uv  = osg_MultiTexCoord0.xy; \n"
"    uv1 = osg_MultiTexCoord1.xy; \n"
"} \n";

char ModelFragmentShaderSource[] =
"#version 330 core\n"
"uniform sampler2D sampler0; \n"
"uniform sampler2D sampler1; \n"
"in  vec2 uv; \n"
"in  vec2 uv1; \n"
"out vec4 FragColor; \n"
"void main() \n"
"{ \n"
"    vec4 hdrColor  = texture2D(sampler0,uv); \n"
"    vec4 hdrColor1 = texture2D(sampler1,uv); \n"
"    FragColor      = hdrColor * hdrColor1; \n"
"} \n";


//the part of .osg file data
Group {
  UniqueID Group_0
  DataVariance STATIC
  name "Scene Root"
  nodeMask 0xffffffff
  cullingActive TRUE
  StateSet {
    DataVariance STATIC
    rendering_hint DEFAULT_BIN
    renderBinMode INHERIT
    GL_LIGHTING ON
    GL_NORMALIZE ON
  }
  num_children 1
  Group {
    DataVariance STATIC
    name "出租车"
    nodeMask 0xffffffff
    cullingActive TRUE
    num_children 5
    Group {
      DataVariance STATIC
      name "boli"
      nodeMask 0xffffffff
      cullingActive TRUE
      description "3d66Models: www.3d66.com-ID:1092598"
      num_children 1
      Geode {
        DataVariance STATIC
        name "boli-GEODE"
        nodeMask 0xffffffff
        cullingActive TRUE
        num_drawables 2
        Geometry {
          DataVariance STATIC
          name "XFC_03"
          StateSet {
            DataVariance STATIC
            name "XFC_03"
            rendering_hint DEFAULT_BIN
            renderBinMode USE
            binNumber 10
            binName DepthSortedBin
            GL_CULL_FACE OVERRIDE|OFF
            GL_LIGHTING ON
            GL_NORMALIZE ON
            GL_BLEND ON
            Material {
              UniqueID Material_1
              ColorMode OFF
              ambientColor 0.588 0.588 0.588 1
              diffuseColor 1 1 1 1
              specularColor 0 0 0 1
              emissionColor 0 0 0 1
              shininess 12.8
            }
            LightModel {
              UniqueID LightModel_2
              ambientIntensity 0.2 0.2 0.2 1
              colorControl SINGLE_COLOR
              localViewer FALSE
              twoSided TRUE
            }
            BlendFunc {
              UniqueID BlendFunc_3
              source SRC_ALPHA
              destination ONE_MINUS_SRC_ALPHA
            }
            textureUnit 0 {
              GL_TEXTURE_2D ON
              Texture2D {
                UniqueID Texture2D_4
                file "images\\XFC_03.tga"
                wrap_s REPEAT
                wrap_t REPEAT
                wrap_r CLAMP_TO_EDGE
                min_filter LINEAR_MIPMAP_LINEAR
                mag_filter LINEAR
                maxAnisotropy 1
                borderColor 0 0 0 0
                borderWidth 0
                useHardwareMipMapGeneration TRUE
                unRefImageDataAfterApply TRUE
                internalFormatMode USE_IMAGE_DATA_FORMAT
                resizeNonPowerOfTwo FALSE
                shadowComparison FALSE
                shadowCompareFunc GL_LEQUAL
                shadowTextureMode GL_LUMINANCE
              }
            }
            textureUnit 1 {
              GL_TEXTURE_2D ON
              Use Texture2D_4
              TexEnvCombine {
                UniqueID TexEnvCombine_5
                combine_RGB REPLACE
                combine_Alpha INTERPOLATE
                source0_RGB PREVIOUS
                source1_RGB PREVIOUS
                source2_RGB CONSTANT
                source0_Alpha TEXTURE
                source1_Alpha PREVIOUS
                source2_Alpha CONSTANT
                operand0_RGB SRC_COLOR
                operand1_RGB SRC_COLOR
                operand2_RGB SRC_ALPHA
                operand0_Alpha SRC_ALPHA
                operand1_Alpha SRC_ALPHA
                operand2_Alpha SRC_ALPHA
                scale_RGB 1
                scale_Alpha 1
                constantColor 1 1 1 1
              }
            }
          }
          ..............................
          ..............................
Reply all
Reply to author
Forward
0 new messages