Unity/Unity Study

ngui uitexture shader update

붕대마음 2016. 5. 3. 20:54
반응형

uitexture의 머티리얼에 setfloat(...)을 해 줘도 제대로 갱신이 안된다.

분명 update()함수에서 해 줬는데도 안됨.


void Update()

{

    offset += Time.deltaTime * 0.005f;

    material.SetFloat("_Distance", offset);

}

값이 설정은 되는데 왜 안되는지 모르곘다.

그래서 좀 검색을 해 봤더니 dynamicMaterial 이라는 것을 써야 한다는 것을 알게되었다.
주석을 보면 이 dynamicMaterial 이라는 놈은 "실제 지오메트리를 그리기 위해 
draw call에서 동적으로 생성해서 사용되어지는 머티리얼"이라고 적혀있다.

Instantiated material 이라고 적혀 있는데 언리얼에서 제공하는 instance material
같은 개념인가? 흐음..

아무튼 material.SetFloat("_Distance", 0.015f); 이렇게 하면 안되던 것이
tex_.drawCall.dynamicMaterial.SetFloat("_Distance", offset); 이렇게 하면 
동적으로 변경이 된다.


ShaderTest.shader



ShaderTest.cs


Reference Link

http://www.tasharen.com/forum/index.php?topic=6495.0

http://www.zedia.net/2013/blur-filter-for-uitexture-in-ngui/

http://www.tasharen.com/forum/index.php?topic=6490.0

-