-
Notifications
You must be signed in to change notification settings - Fork 4
shading
hanwoong kim edited this page Oct 23, 2018
·
23 revisions
- 블랜더파일을 이용해서 쉐이더를 라이브러리화하면 하나의 쉐이더당 530k 용량을 소모하게됩니다.
- Osl파일을 사용하면 3k정도의 용량을 사용합니다. 또한 코드이기 때문에 라이브러리 및 Git을 활용한 버전관리가 쉽습니다.
- OSL은 GPU를 지원하지 않습니다.
- 리눅스, 유닉스에서는 컴파일러가 설치되어 있어야 합니다.
/usr/bin/cpp
- OSL은 node방식으로 디자인되어있습니다.
- a.osl파일을 컴파일하면 같은 경로에 a.oso 파일이 생성됩니다.
- stdosl 소스코드 위치 : 블랜더소스코드/intern/cycles/kernel/shaders/stdosl.h
- 렌더러는 Cycles로 셋팅해야 OSL쉐이더를 사용할 수 있습니다.
- 렌더 옵션에서 Open Shading Language 옵션을 활성화해야 렌더링시 블랙으로 렌더링되지 않습니다.
- Lazypic Init셋팅에 자동으로 활성화되도록 셋팅되어있습니다.
shader simple_material(
color Diffuse_Color = color(0.6, 0.8, 0.6),
float Noise_Factor = 0.5,
output closure color BSDF = principled_diffuse(N, 1))
{
color material_color = Diffuse_Color * mix(1.0, noise(P * 10.0), Noise_Factor);
BSDF = material_color * principled_diffuse(N, 1);
}
-
P
: Point -
I
: Eye Vector -
M_PI
: 파이 -
dPdx
: -
dPdy
: -
dIdx
: -
dIdy
: -
N
: Normal. 각이 지지 않도록 하려면 Tool Shelf에서 Shading Smooth를 한번 눌러줘야한다. N은 덮어쓰기를 할 수 있다. -
Ng
: 보간이 되지 않은 노말 -
u
: -
dudx
: -
dudy
: -
v
: -
dvdx
: -
dvdy
: -
dPdu
: -
dPdv
: -
surfacearea
: -
time
: -
raytype
: bool -
backfacing
: bool
-
normalize(Vector)
: 벡터를 노멀라이즈 한다. Point Vector를 보통 많이 Normalize함.
- Osl쉐이더 레퍼런스 : https://github.com/sambler/osl-shaders
- 위 레퍼런스와 관련된 E-book : https://www.smashwords.com/books/view/368598
- node Wrangler : 노드에디터에서 Ctrl + Shift + 마우스를 클릭하면 실시간 렌더링뷰에서 해당 노드연산만 프리뷰할 수 있습니다.
- Arnold 5.0이상
- Renderman(PxrOSL) : https://renderman.pixar.com/resources/current/RenderMan/PxrOSL.html
- Maya
- Vray(VRayOSLMtl) : https://docs.chaosgroup.com/display/VRAY3MAX/OSL+Support
- Houdini
- Katana & Gaffer