WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   multitex fragment shader issue for different sized textures (https://forum.worldviz.com/showthread.php?t=5568)

pitbool 12-03-2015 05:08 PM

multitex fragment shader issue for different sized textures
 
1 Attachment(s)
Hi,

I am trying to blend an algae texture to a sea floor texture. The algae texture file is a 512x512 jpg image. I am retrieving the other texture from our ocean osgb model. This texture is a 1024x1024 baked into the model.

I have tried four ways (see below), but unfortunately, none works!
All are shaders, except for the first.

1. Using texblend - this gives some kind of blending, but it is non-uniform and not upto our expectations.
2. Using the texBlendFP.frag shader - the first texture do not show up at all.
3. Using the custom blend shader from \examples\shader\tutorial_multiTexture.py - the first texture do not show up at all.
4. Using the code from multiTexture.py (Tutorial: Multi-texturing) - strangely, same result as in option 1 above!

I have attached the py file in txt format here.
Any suggestions on how to get this to work?

Thank you!

Jeff 12-04-2015 12:11 PM

It will be best if you can post example Vizard code that reproduces the issue and can be run directly.

pitbool 12-04-2015 03:13 PM

#
Code:

import viz
import vizfx

terrain = vizfx.addChild('blendTest.OSGB')
viz.go()

viz.MainView.setPosition([58.64860153198242, 0.0, -6.446604251861572])

algaeTexture = viz.addTexture('algae_texture3.jpg', type=viz.TEX_2D, wrap=viz.REPEAT)
# Create shader effect that blends textures and applies to diffuse color
code = """
Effect "Texture Blend" {

Float BlendAmount { value 0 }
Texture2D Texture1 { unit 0 }
Texture2D Texture2 { unit 1 }

Shader {

        BEGIN Material
        m.diffuse = mix( texture2D( Texture1, uvTexture1).rgb, texture2D( Texture2, uvTexture2).rgb, BlendAmount);
        END

}

}
"""
texBlendEffect = viz.addEffect(code)

itemFromTerrain = terrain.getChild('Terrain_Zone03')
oldTex = itemFromTerrain.getTexture()
itemFromTerrain.texture(oldTex)
itemFromTerrain.texture(algaeTexture, '', unit=1)
itemFromTerrain.apply(texBlendEffect)
itemFromTerrain.setUniformFloat('BlendAmount', 0.0)

slider = viz.addSlider(pos=[0.5,0.1,0])

def setBlendAmount2(blendRatioFromSlider):
        global itemFromTerrain
        itemFromTerrain.setUniformFloat('BlendAmount', blendRatioFromSlider)
vizact.onslider(slider, setBlendAmount2)

#


I couldn't find a Vizard resource to recreate this issue, so here is a link to download a zip of my shortest test py file with the terrain osgb and the algae jpg that I am trying to blend - https://stanford.box.com/s/5myna254j...5mkbkfmzdjug28.

pitbool 12-08-2015 08:22 PM

Jeff, just letting you know that I was able to solve the problem, with the help of Jorge, a Worldviz 3D artist. The baked texture in the terrain was a blend of two textures and a masked texture. I think he used the "render to texture" feature in 3DS max to export all of it to a single texture, which I used instead of retrieving the texture1 from the terrain at runtime. Then I blended it using the algae texture in the unit 1 of multitexturing.

Thank you.


All times are GMT -7. The time now is 09:03 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC