※ 다음의 내용은 deathfall에서 연재하는 BMRT(프리소프트웨어)강좌 내용의 번역글
임을 밝힌다.

사용툴 다운로드 : Blue Moon Rendering Tools(BMRT), SlcEditor
먼저 Notepad 로 다음의 내용을 작성한다.
surface myShader()
{
Ci = Cs;
Oi = Os;
}
위의 작성 내용을 myShader.sl 란 이름의 파일로 저장한다.

Command Prompt window에서 다음을 작성한다.
slc myShader.sl

이제 BlueMoon에서 컴파일이 되었다.
slced를 연다.(아래의 그림은 데스크탑의
바로가기이다.)

Change Dir 란 곳에서 myShader.sl를 찾는다.

OK를 클릭한다.
Surface shader의 none이라고 써있는
메뉴에서 myShader를
찾아 클릭한다.

preview 윈도우를
클릭하면 다음과 같이 하얀 원이 나타날 것이다.

the Source...버튼을
클릭하면 shader code가 보여질 것이다. 그럼 이제 노트패드를 닫아도 좋다.

아래의 데이터를 입력하여 diffuse를 첨가한다.
surface myShader()
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
Ci = clrDiffuse;
Oi = OS;
}

아래의 아이콘을 클릭하여 이것을 콤파일한다.

프리뷰이미지를 클릭하면 diffuse를 가지고 있는 shader를 볼 수
있을 것이다.

이제 diffuse에 color를 첨가해보자. diffuse에 다양한 색상의 변화를 주게 될
것이다.(아래의 경우 RGB가 0,1,0인 값의 녹색을 이다.)
surface myShader()
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
color clrGreen = (0,1,0);
clrDiffuse = clrDiffuse * clrGreen;
Ci = clrDiffuse;
Oi = Os;
}
이것을 저장해서 콤파일한다. 그럼 다음의 green shader를 갖게된다.

이러한 방법으로 사용자는 diffuse의 color값을 바꿀 수 있다. 아래처럼
맨 윗줄을 이용하여 색상을 다양화할 수 있다.
surface myShader(color clrGreen=(0,1,0))
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
clrDiffuse = clrDiffuse * clrGreen;
Ci = clrDiffuse;
Oi = Os;
}
이것을 다시 저장해서 콤파일한다. 그리고 Refresh
Shader 란 곳을 클릭해서 다양화(variable) 시킬 수 있다.

아래와 같이 다양화된 윈도우(clrGreen)를 볼 수 있을 것이다. 이것을 선택하여 color를 선택한다.

이것을 프리뷰한다.

이제 더욱 강한 다양화를 첨가해보자.(intDiffuse).
그러면 사용자는 intensity를 조절할 수 있게 된다.
surface myShader(color clrGreen=(0,1,0);
float intDiffuse=1;)
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
clrDiffuse = (clrDiffuse * clrGreen)*intDiffuse;
Ci = clrDiffuse;
Oi = Os;
}
새롭게 다양화된 것들을 보기위해서 매회 Refresh
Shader버튼을 클릭해야 한다. 그러면 intDiffuse를 보게 될 것이다. 2를 입력해보자.

아래는 0.5를 입력한 경우이다.

아래의 값을 복사하여 specular (highlite)를
만들어 보자.
surface myShader(color clrGreen=(0,1,0);
float intDiffuse=1;)
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
clrDiffuse = (clrDiffuse * clrGreen)*intDiffuse;
color highlite = specular(normalize(N),normalize(-I),.1);
Ci = clrDiffuse+highlite;
Oi = Os;
}
이제 diffuse에 specular이 더해졌다. (Ci =
clrDiffuse+highlite)

이제 specular에 새로운 다양화를 가해보자.
surface myShader(color clrGreen=(0,1,0);
float intDiffuse=1;
color clrHighlite=(0,0,1))
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
clrDiffuse = (clrDiffuse * clrGreen)*intDiffuse;
color highlite = specular(normalize(N),normalize(-I),.1);
highlite = highlite*clrHighlite;
Ci = clrDiffuse+highlite;
Oi = Os;
}
diffuse에서 했듯이 specular의 color를 다양하게 변화를 주자. (highlite = highlite*clrHighlite), 이제
사용자는 specular에 color를 더할 수 있게 되었다.

그리고 나서 specular에 컨트롤 폼을 주어서 intensity를 만들고 specular폼에
roughness 를 주어 intSpecular를 만들 것이다. 아래값을 복사해서 사용해보자.
surface myShader(color clrGreen=(0,1,0);
float intDiffuse=1;
color clrHighlite=(0,0,1);
float roughness=.1;
float intSpecular=1)
{
color clrDiffuse = diffuse(faceforward(normalize(N),I));
clrDiffuse = (clrDiffuse * clrGreen)*intDiffuse;
color highlite = specular(normalize(N),normalize(-I),roughness);
highlite = (highlite*clrHighlite)*intSpecular;
Ci = clrDiffuse+highlite;
Oi = Os;
}
이제 최종 렌더러(preview) 를 위해서 프리뷰의 오브젝트를 바꿔보자. 아래는
cone으로 바꾼 경우다.

Pixar Rederman을 가지고 있다면 Command Prompt 윈도우에서 아래를
입력하여 콤파일 시킬 수 있다.
shader myShader.sl

이러한 방식으로 Rederman의 shader를 만들 수 있다.