ngui uitexture shader update

반응형

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

-

'Unity > Unity Study' 카테고리의 다른 글

unity bug with tegra k1  (0) 2016.09.03
unity material parameter 변경  (0) 2016.05.12
SV_POSITION과 POSITION  (0) 2016.04.15
visual studio 2012 tools  (0) 2015.09.14
Texture2D Alpha channel  (0) 2015.09.13
TAGS.

Comments