[ C/ C++ 프로그래밍 ]/[ Shader ] 썸네일형 리스트형 카툰 렌더링 ㅇGlow 카툰 세이더 float4x4 matWorldView; float4x4 matWorldViewIT; float4x4 matProjection; float3 LightDir; float4 diffuseColor; float4 ambientColor; float4 GlowColor; float4 GlowAmbient; float GlowThickness; texture base; sampler2D Texture0 = sampler_state { texture = (base); minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR; addressu = wrap; }; struct VS_INPUT { float4 Position : POSITION0;.. 더보기 퐁세이딩 ㅇ 원본 ㅇ 퐁세이딩 ㅇ 세이더 float4x4 matWorldViewProjection; float4x4 matWorldView; float4 vLightDir; float4 vColor; float3 vEyePos; texture diffuse; //sampler Texture0; sampler2D Texture0 = sampler_state { texture = (diffuse); minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR; addressu = wrap; }; struct VS_INPUT { float4 Position : POSITION0; float4 Normal : NORMAL; float2 Texcoord : TEXCOORD0; .. 더보기 VC++ 2008에서 쉐이더 코드를 C++ 코드처럼 도구->옵션->텍스트 편집기->파일 확장명 확장명에 fx쓰고 편집기를 Microsoft Visual C++선택하고 추가를 누른다. 더보기 Glow 효과 ㅇ 원본 ㅇ Glow 효과 ㅇ 세이더 float4x4 matWorldView; float4x4 matWorldViewIT; float4x4 matProjection; float3 LightDir; float4 diffuseColor; float4 ambientColor; float4 GlowColor; float4 GlowAmbient; float GlowThickness; texture base; sampler2D Texture0 = sampler_state { texture = (base); minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR; addressu = wrap; }; struct VS_INPUT { float4 Position : PO.. 더보기 [HLSL] 블린- 퐁 반영 반사광 ㅇ 블린- 퐁 반영 반사광 퐁의 반영 반사 모델은 반사 벡터를 계산해야만 한다. 그러나 특정 환경에서는 반사 벡터를 계산하는 것이 어려워 대체적인 방법으로 블린-퐁(Bilnn-Phong) 반영 반사 모델 이라는 것을 생각해 냈다. 블린-퐁 반영 반사 모델에서는 하프 벡터(Half Vector)가 사용된다. 하프 벡터는 광원 벡터 L과 벡터E의 중간의 각도에 있는 벡터로 아래와 같이 나타낸다. 블린 - 퐁의 반영 반사광은 하프 벡터와 법선 벡터 내적의 곱으로 계산한다. 이 반영 반사광의 강도가 가장 큰 곳은 법선 벡터와 하프 벡터의 방향이 가까운 경우, 즉 법선 벡터와 하프 벡터가 같은 경우이다. 이것은 정확히 시선 벡터와 법선 벡터가 이루는 각도와 광원 벡터와 법선 벡터가 이루는 각도가 동일한 곳으로 시.. 더보기 [HLSL] 퐁 반영 반사광 (반사벡터) 잘 딱여진 물체를 보면 표엔 빛이 지쳐 반짝반짝 빛나게 된다. 특히 태양과 같은 강한 빛이 있으면 태양빛이 반사된 부분은 하이라이트라고 부르는 강하고 흰 빛이 눈부시게 그려진다. 이 하이라이트를 표현하기 위한 방법으로 가장 잘 알려진 반영(specularity) 반사 기법이 퐁에 의한 반영 반사 모델이다. 하이라이트와 같은 강한 반사는 입사한 빛이 반사되는 각도에서 보았을 때 제일 강하게 반사된다. 이말은 [ 시선이 물체에서 반사되었을 때, 그 방향이 빛의 입사방향에 가까울수록 밝게 보인다. ]고 바꾸어 말 할 수 있다. 퐁은 시선이 물체에 반사되었을 때의 반사 벡터 R을 구해서 반사벡터가 광원 벡터(물체에서 광원을 향하는) L과 가까우면 강한 빛, R과 L이 멀면 약한 빛이 되도록 수식화 했다. 퐁의 .. 더보기 [HLSL] 램버트 확산 조명 ㅇ 램버트 확산 조명 “물체 표면에서 반사하는 빛의 휘도(Luminance)는 빛의 입사 벡터 L과 표면의 법선 벡터 N이 이루는 각도의 코사인에 비례한다” 확산 반사광 -빛의 강도 i, 입사각을 c, 물체의 반사 계수를(물체의 색) k라고 하면, 물체 표면의 색 I은 I = i * k * cos© = I * k * (N*L) (cos© 0) ( N: 법선 벡터, L: 광원이 있는 방향을 가리키는 광원 벡터 ) ※ cos© 가 음수이면 값은 0이다 ㅇ 환경광 일정한 밝기로 물체를 전부 칠하는 빛으로, 물체 면의 방향이나 빛의 방향이 전혀 영향을 주지 않는다. 간접광은 다양한 물체에서 다양한 반사를 반복해 다른 물체를 비추므로 그 밝기는 장소에 따라 다르므로 정확하게 계산하는 것이 매우 어렵다.. 더보기 렌더몽키 다운로드 사이트 http://ati.amd.com/developer/rendermonkey 더보기 [HLSL] 삼각형에 Texture 입히기 ㅇ hlsl.fx 1 float4x4 matViewProjection; 2 3 texture DiffuseTex; 4 5 sampler2D DiffuseSampler = sampler_state 6 { 7 texture = (DiffuseTex); 8 minfilter = LINEAR; 9 magfilter = LINEAR; 10 mipfilter = LINEAR; 11 addressu = wrap; 12 }; 13 14 struct VS_INPUT 15 { 16 float4 Position : POSITION0; 17 float2 TexCoord : TEXCOORD0; 18 19 }; 20 21 struct VS_OUTPUT 22 { 23 float4 Position : POSITION0; 24 flo.. 더보기 [HLSL] 간단한 삼각형 그리기 ㅇ hlsl.fx 파일 1 /// 세이더 소스 2 3 float4x4 WorldViewProj; 4 5 /// Vertex 입력 구조체 선언 6 struct VS_INPUT 7 { 8 float4 InPos : POSITION0; 9 }; 10 11 /// Vertex 출력 구조체 선언 12 struct VS_OUTPUT 13 { 14 float4 OutPos : POSITION0; 15 }; 16 17 VS_OUTPUT vs_main(VS_INPUT Input) 18 { 19 VS_OUTPUT Output; 20 21 Output.OutPos = mul(Input.InPos, WorldViewProj); 22 23 return (Output); 24 } 25 26 float4 ps_main() : CO.. 더보기 이전 1 2 다음