VEX

VEX는 쉐이더를 작성하는 등 Houdini의 많은 영역에서 사용되는 고성능 수식 언어이다.

VEX는 컴파일된 C/C++ 코드에 근접한 퍼포먼스를 보여주는 매우 효과적인 능력을 보여준다. VEX는 스크립팅의 대안이 되지 않지만, 더 작아질 수 있고, 쉐이더와 커스텀 노드들을 작성하는 언어에 더 적합하다.

VEX는 C 언어에 크게 기반하지 않으나, C++과 RSL (RenderMan Shading Language)에서 개념을 채용했다.

VEX는 Houdini의 몇 몇 영역에 사용된다 :

  • Rendering – Mantra는 모든 쉐이딩 계산을 위해 VEX를 사용한다. 여기에는 light, surface, displacement, fog shader 등이 포함된다.
  • Compositing – VEX Generator COP과 VEX Filter COP은 복잡한 커스텀 COP들을 VEX로 작성할 수 있게 한다. 그 수식들은 C/C++의 속도에 매우 근접하게 값을 구하고 Pixel Expression COP보다 1000배 빠르게 실행된다.
  • Particles – VEX POP은 POP 노드들이 할수 있는 거의 대부분의 것들을 할 수 있게 한다. 많은 POP들의 작업을 하나의 VEX 함수로 수행할수 있게 작성하는 것이 가능하다. VEX 코드가 하나의 오퍼레이터에 국한되기 때문에, VEX 코드가 다른  POPs의 네트워크 보다 빠르게 실행될 것이다.
  • Modeling – VEX SOP은 point attribute를 변경할 수 있는 커스텀 surface 노드를 작성할 수 있게 한다. 이를 통해 point를 이동시키고, velocity를 적용시키고, 색을 바꾸는 등의 작업을 할 수 있다. 또한, point들을 그룹화하거나 다른 많은 작업들을 할 수 있다. VEX SOPs는 보통 point SOP보다 10배 이상 빠르게 실행된다.
  • CHOPs – VEX CHOP은 CHOP을 커스텀할 수 있게 한다. CHOP 함수들은 임의의 수의 인풋 채널들을 변경할 수 있고 채널 데이터를 임의의 방법으로 실행할 수 있다. 어떤 경우에는, VEX 코드가 컴파일된 C++ 코드 보다 빠르게 실행된다.
  • Fur – 프로시듀럴 fur 움직임은 VEX와 함께 실행된다.

Subtopics

VEX language reference

Loops and flow control

Arrays

Vex compiler (vcc)

VEX compiler pragmas

Shader Calls

Using VEX expressions

Geometry functions

Shaders for physically based rendering (PBR)

VEX cookbook

Half-edges

Noise and randomness

Creating a surface or particle node using VOPs/VEX

VOP structs

VEX Contexts

VEX functions

Strings

 

↑ up level