반응형

Unity/그래픽스프로그래밍 27

0506_ Lambert에서 BlinnPhong 스펙큘러 만들기

이미지 한 장을 받는 것을 만들어준다. ---- 블린퐁 조명을 만들기 위해서는 공식이 존재한다. 반사 벡터를 구하는 공식 (리플렉션 구하는 공식) R = 2 N(L * N) - L 이 공식이다. 이건 반사 벡터 구하는거고 우리는 좀더 간략하게 된, 블린 퐁 공식을 사용할 것이다. 하프 백터 = V + I 하프 벡터를 노멀라이즈를 해준다. (방향만) 구한 하프벡터에서 n 벡터와 Dot 연산을 해준다. ------ 일단 완전 기본적인 램버트의 라이트를 만들어준다. 커스텀 라이트로 Shader "Custom/Phong" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Normal ("Normal", 2D) = "Normal" {} } SubShader ..

0506_ 홀로그램 만들기

텍스처 한 장을 받는 쉐이더 작성 Lambert 적용 프레넬 공식 적용 (rim 라이트 공식) Rim 까지 만들어 놓기 Shader "Custom/Holo" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _RimColor("Color", Color) = (1,1,1,1) _RimPow("Pow", Range(0,10)) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert #pragma target 3.0 sampler2D _MainTex; float _RimPow; float4 _RimColor; struct Input { flo..

0506 _ RIM 라이트 표현하기

RIM 라이트 (겉에 붙는 라이트) 반사율을 적용하는 공식 Franel 공식 --- 먼저 한장만 받는 걸 만들고. 환경광을 없애준다 라이트는 스탠다드가 아닌 램버트로 바꾸고 알베도를 0으로 해서 검정색으로 만든다 --- Input 구조체에 ViewDir 바라 보는 방향 Unity - Manual: Writing Surface Shaders (unity3d.com) Unity - Manual: Writing Surface Shaders Vertex and fragment shader examples for the Built-in Render Pipeline Surface Shaders and rendering paths Writing Surface Shaders In the Built-in Render P..

0506_유니티 그래픽스 라이트 연산에 대하여

노멀, 표면이 바라보는 정방향 라이트가 때리는 방향과 받는 오브젝트의 노멀값을 계산을 해서 빛을 표현해주는 것 물체가 있으면 표면이 있고, 표면이 있으면 노멀 (방향이 존재) 노멀과 빛의 방향이 직각 서로 닿아 있지 않으면, 제일 어둡게 나온다. 조명의 백터 표면의 백터 서로 마주보고 잇으면 제일 밝다 90도 직각을 이루고 있으면 제일 어둡다. 색상에서는 float2(0.5, 0.5) 는 회색 UV에서는 위치 중간 즉, 숫자(수치) : 색상, 위치, 방향이 될 수 있다. ----- 정육면체에서는 꺽이는 부분은 90도가 될 수 있으므로 나중에 우리는 부분을 중간값을 넣을것이다 (보간 기법) ---- 버텍스 또한 각자의 노멀을 가지고 있다 . ----- 노멀벡터 - 조명벡터 = 가장 밝은 쪽 표현하기 위해서..

0504 _ 라이트에 따른 쉐이더 // 노멀 및 여러맵 넣었을 때 차이점

라이트! 스탠다드 셰이더 예전부터 지원하던 스탠다드 셰이더, 기본적인 물리기반 셰이더이고 자동으로 계산을 해준다. 정도만 알고있으면 된다. 라이트에 따른 쉐이더 Lambert 스펙큘러가 없음, 구조체 SurfaceOutput 구조체 사용 BlinnPhong 스펙큘러 공식이 들어가 있음, 조금 더 스펙큘러 공식을 단순화 시킨것 스펙큘러 공식은 보는 각도에 따라 계산된 특정 색의 라이트 동그라미로 표시 구조체 SurfaceOutput 구조체 사용 Standard 물리기반 쉐이더, 주변환경을 반사해서 스펙큘러 구현 SurfaceOutputStandard / SurfaceOutputStandardSpecular 구조체로 사용 ---- 1. 램버트 사용 램버트 일 경우 , 스펙큘러, 글로스니스를 지원하지 않는다...

0504 _ 특정 부분만 러프니스 또는 메탈릭 주기 (버텍스 컬러, 그레이 스케일)

0. color.b 에만 추가할것 이다. 1.저 부분만 젖은 느낌으로 러프니스를 높여줄꺼다. o.Smoothness = (IN.color.b * 0.5) * _Smoothness; b로 평균값을 구하는 공식 0.5는 오프셋 값. o.Smoothness = (IN.color.b * 0.5) * _Smoothness + 0.5; Shader "Custom/Test" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _MainTex2 ("Albedo (RGB)", 2D) = "white" {} _MainTex3 ("Albedo (RGB)", 2D) = "white" {} _MainTex4 ("Albedo (RGB)", 2D) = "white" {} _Nor..

0504_그래픽스 Metallic, Smoothness

Unity - Manual: Material charts (unity3d.com) Unity - Manual: Material charts Material charts Use these charts as reference for realistic settings: Reference Chart for Metallic settings Reference Chart for Specular settings There are also hints on how to make realistic materials in these charts. In essence it is about choosing a wor docs.unity3d.com 0. 소스맵을 세이더에 넣어준다. 1. 노멀은 데이터를 풀어서 사용해야한다 Unpa..

0504_ 그래픽스 폴리브러쉬 사용해서 돌에 이끼 및 텍스쳐 그려보기

앞서 했던, 버텍스 컬러에 텍스쳐링에 넣은 방법과 비슷하게 폴리브러쉬를 사용해서 모델링의 버텍스에 칠을 하는 것이다. 툴- 폴리브러쉬 윈도우으로 열어준다 ColorMask에서 R G B 눌러주고, 원하는 부위를 칠해준다. IN.color.rgb; 로 찍어서 보면 칠한 부분에 r g b 에 이미지가 들어간다. ★마스크 누르고 하면 안댐! 그냥 칠해야함 ! 테스트 전부 검정으로하고, 레드부분만 칠해준다. ★컬러마스크 노노 색깔 확인만을 위해서 color.rgb로 함 -------

0504 _ 그래픽스, 버텍스 색 바꾸기

예제에서 준, 모델링 점이있는 모델링은 점마다 색을 가질수가 있다. 이걸 바꿔주는 걸 할 것이다. 0. 이미지 한장을 받는 쉐이더를 만들어준다 . 기본 1. INPUT 에 // INPUT에서 기본적으로 쓸 수 있는 것들이 있음 (API 참고) float4 color:COLOR; 이걸 하면 버텍스 컬러를 가져올수있음 버텍스에 색이 채워져 있는 모습임 2. 만약 기본 텍스쳐(넣어준거)에 버텍스 컬러를 더하면? 색이 묻어나는 걸 확인 할 수 있음 텍스쳐를 넣으면 이렇게 뜸, 곱하기를 하면 어두워진다. 3. 이번에는 4개의 이미지를 받는 것을 만들어준다. 이제 버텍스 컬러별로 이미지를 합치는것 (내가 찾던거!) 이미지를 흰색 1, 블랙 0으로 써서 나오게하는 것 여기서는 버텍스 컬러를 이용해서 한다. lerp를..

반응형