Recommended
PDF
Unity Surface Shader for Artist 01
PDF
HI-ARC PS 102 Brute Force
PDF
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
PDF
PPTX
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
PPTX
Chapter 9 - convolutional networks
PDF
PDF
PDF
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
PDF
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
PPTX
9_혼합_DirectX 11을 이용한 3D 게임 프로그래밍 입문
PDF
PPTX
이펙트 쉐이더 1강 - Shader 기초 개념
PDF
PDF
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
PPTX
PPTX
Cheap realisticskinshading kor
PPT
PPTX
[14.09.01] dynamic lighting in god of war3(shader study)
PPTX
PDF
Unity Surface Shader for Artist 02
PDF
Unity Surface Shader for Artist 03
PDF
PPTX
[14.10.21] Far Cry and DX9 번역(shaderstudy)
PDF
PPTX
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
PDF
PPTX
7강 shader basic lighting_배포용 삭제버전
PDF
[Shader study]Shadow Map Silhouette Revectorization(2014.01.06)
PPTX
[14.12.08] 행렬대수(ShaderStudy)
More Related Content
PDF
Unity Surface Shader for Artist 01
PDF
HI-ARC PS 102 Brute Force
PDF
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
PDF
PPTX
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
PPTX
Chapter 9 - convolutional networks
PDF
PDF
Similar to [Shader study] Color control (2014.05.12)
PDF
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
PDF
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
PPTX
9_혼합_DirectX 11을 이용한 3D 게임 프로그래밍 입문
PDF
PPTX
이펙트 쉐이더 1강 - Shader 기초 개념
PDF
PDF
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
PPTX
PPTX
Cheap realisticskinshading kor
PPT
PPTX
[14.09.01] dynamic lighting in god of war3(shader study)
PPTX
PDF
Unity Surface Shader for Artist 02
PDF
Unity Surface Shader for Artist 03
PDF
PPTX
[14.10.21] Far Cry and DX9 번역(shaderstudy)
PDF
PPTX
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
PDF
PPTX
7강 shader basic lighting_배포용 삭제버전
More from 해강
PDF
[Shader study]Shadow Map Silhouette Revectorization(2014.01.06)
PPTX
[14.12.08] 행렬대수(ShaderStudy)
PPTX
[아꿈사] The C++ Programming Language 13장 템플릿
PPTX
[14.10.10] TressFX 번역(self)
PDF
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
PPTX
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
PDF
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
PDF
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
PDF
[Dev rookie] 어디로 가야 하나요(13.10.05)
PDF
[Dev rookie] Omnibus Me (2014.01.11)
PPTX
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
PDF
[14.06.28] 이 구역의 프로그래머는 나야(devrookie - 공개용)
PDF
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
PDF
[14.12.27] 종횡사해2014(DevRookie)
PDF
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
PDF
[Dev rookie]사망유희2013(13.12.21)
PDF
[Softmax] 유익한 무엇에 관하여(13.09.27)
PDF
[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
PDF
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
PPTX
[Dev rookie] 예술하고 싶어요(13.06.29)
[Shader study] Color control (2014.05.12) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 포토샵의 커브를 이용, 혹은 그라데이션을 만들어 적용
float3 InColor = tex2D (inSampler, IN.UV) XYZ;.
Float3 OutColor;
OutColor.r = tex1D (ColorCorrMap, InColor.r) R;
OutColor.g = tex1D (ColorCorrMap, InColor.g) G;
OutColor.b = tex1D (ColorCorrMap, InColor.b) B;
Curves
13. Luminanace 값
{0.222, 0.707, 0.071} 은 국제 산업 색상 표준
Float4 GrayScaleConversion( float4 InSceneColor )
{
float4 gray = dot(InSceneColor.xyz, luminace.xyz);
float4 Color = balance * lerp(gray, InSceneColor, saturation);
color.rgb *= fadeValue;
return color;
}
Grayscale Conversion
14. float3 CalcLut( sampler InLUT, float3 InColor )
{
// 256 x 16 LUT
float2 Offset = float2(0.5f / 256.0f, 0.5f / 16.0f);
float Scale = 15.0f / 16.0f;
float IntB = floor(InColor.b * 14.9999f) / 16.0f;
float FraceB = InColor.b * 15.0f – IntB * 16.0f
float U = IntB + InColor.r *Scale / 16.0f;
float V = InColor.g * Scale;
float3 RG0 = tex2D( InLUT, Offset + float2(U,V).rgb;
float3 RG1 = tex2D(InLUT, Offset + float2(U + 1.0f /
16.0f, V)).rgb;
Return lerp(RG0, RG1, FracB);
}
Unreal3
15. Unreal3 16x16x16 3d VolumeTexture
Float3 CalcLUT( sampler InLut, float3 InColor )
{
return tex3D( InLUT, InColor * 15.f / 16.f + 0.5f).rgb;
}
색상 채널을 혼합해 모든 픽셀에 전체 매핑 하는 경우
float3 InColor = tex2D . (inSampler, IN.UV) XYZ, float3
OutColor = tex3D (colorSpaceSampler, inColor);
Unreal3, GpuGems
16. 좀 더 기능들을 제공하면 사용하지 않을까…
포토샵에서 지원하는 기능들
Blend Mode
17. // Curves Shader
float2 g_fTexcoord;
float4 g_fColour;
uniform sampler2D texCurve;
vec4 curves(float4 inColor, sampler2D texCurve)
{
return float4(texture2D(texCurve, vec2(inColor.r, 0.5)).r,
texture2D(texCurve, vec2(inColor.g, 0.5)).g,
texture2D(texCurve, vec2(inColor.b, 0.5)).b, inColor.a);
}
void main()
{
float4 inColor = (g_fColour * texture2D(gm_BaseTexture, g_fTexcoord));
gl_FragColor = curves(inColor, texCurve);
}
18. 기본 이미지의 휘도 증가, 빛 효과에 유용
// Screen Shader
float2 g_fTexcoord;
float4 g_fColour;
uniform sampler2D texScreen;
void main()
{
float4 inColor = g_fColour * texture2D(gm_BaseTexture, g_fTexcoord);
float4 blend = texture2D(texScreen, g_fTexcoord);
float4 outColor = float4(1.0 - (1.0 - inColor.rgb) * (1.0 - blend.rgb), inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
19. 기본 이미지의 밝기를 낮추는 효과, vignette effects에 유용
// Multiply Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texMultiply;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
vec4 blend = texture2D(texMultiply, v_vTexcoord);
vec4 outColor = vec4(blend.rgb * inColor.rgb, inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
20. 색상 대비증가 빛이 없는 씬 유용
// Overlay Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texOverlay;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture,
v_vTexcoord);
vec4 outColor = vec4(0.0, 0.0, 0.0, inColor.a);
vec4 overlay = texture2D(texOverlay, v_vTexcoord);
if (inColor.r > 0.5)
outColor.r = (1.0 - (1.0 - 2.0 * (inColor.r - 0.5)) * (1.0
- overlay.r));
else
outColor.r = ((2.0 * inColor.r) * overlay.r);
if (inColor.g > 0.5)
outColor.g = (1.0 - (1.0 - 2.0 * (inColor.g - 0.5)) * (1.0
- overlay.g));
else
outColor.g = ((2.0 * inColor.g) * overlay.g);
if (inColor.b > 0.5)
outColor.b = (1.0 - (1.0 - 2.0 * (inColor.b - 0.5)) * (1.0
- overlay.b));
else
outColor.b = ((2.0 * inColor.b) * overlay.b);
gl_FragColor = mix(outColor, inColor,1.0 - overlay.a);
}
21. 포화도(색의 강도) 조절, Point light에 유용
// Color Dodge Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texColorDodge;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
vec4 blend = texture2D(texColorDodge, v_vTexcoord);
vec4 outColor = vec4(inColor.rgb / (1.0 - blend.rgb), inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
22. 채도를 조절
// Color Burn Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texColorBurn;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
vec4 blend = texture2D(texColorBurn, v_vTexcoord);
vec4 outColor = vec4(1.0 - (1.0 - inColor.rgb) / blend.rgb, inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
23. Multipuly의 반대로 화상을 밝게, 꿈꾸는듯한 효과
// Divide Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texDivide;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
vec4 blend = texture2D(texDivide, v_vTexcoord);
vec4 outColor = vec4(inColor.rgb / blend.rgb, inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
24. 이미지를 반전, 포탈?
// Exclusion Shader
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform sampler2D texExclusion;
void main()
{
vec4 inColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
vec4 blend = texture2D(texExclusion, v_vTexcoord);
vec4 outColor = vec4((abs(inColor - blend)).rgb,inColor.a);
gl_FragColor = mix(outColor, inColor, 1.0 - blend.a);
}
25. 26. 처음엔 이걸 생각
그러나 이후 드는 생각은 누가 이걸 만들어?
http://www.slideshare.net/noerror/07visual-shader-
editor?qid=b3a04c6d-70a3-4363-9574-
976b739f9a01&v=default&b=&from_search=1
Visual Shader Editor
27. 어차피 쉐이더 지원도 없으니 내 맘대로
http://www.youtube.com/watch?v=utaMQFuwNHw&hl=ko
Tool
28. 하나의 Shader로 모든 기능 구현
전처리기를 이용해 Shader 컨트롤
Define된 명령을 이용해 on/off
Uber Shader
29. 30. 31. 감마
텍스쳐 가져올때 보정
float3 diffuseCol = pow( tex2D( diffTex, texCoord ), 2.2 );
최종 칼라 리턴 보정
return float4( pow(finalCol, 1.0 / 2.2), pixelAlpha);
하드웨어 사용시 옵션
Texture : D3DSAMP_SRGBTEXTURE
RenderTarget write: D3DRS_SRGBWRITEENABLE
32. 33.