일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 포인터
- Algorithm
- C# delegate
- C언어 포인터
- c# winform
- 구조체
- c# 추상 클래스
- vim
- 다트 언어
- C++
- c언어
- Unity
- Python
- c# 윈폼
- jupyter
- docker
- github
- 도커
- 플러터
- Flutter
- c#
- 유니티
- dart 언어
- Data Structure
- HTML
- git
- jupyter lab
- 깃
- Houdini
- gitlab
- Today
- Total
목록전체 글 (507)
nomad-programmer
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tmEGH/btrr9giBTYV/k0huTZ1PO77FBzfwfNTDyk/img.png)
Shader "Custom/Reflection" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Cube ("Cubemap", Cube) = ""{} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert noambient #pragma target 3.0 sampler2D _MainTex; samplerCUBE _Cube; struct Input { float2 uv_MainTex; float3 worldRefl; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_Ma..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/coQ9Rc/btrr3im5CtV/2KsKxI9wXN9AkaFKA5mow0/img.png)
Warped Diffuse 기법은 가볍고도 응용이 편리해서 지금도 많이 사용되는 기법이다. 이 기법의 핵심 구현 기법은 빛 계산으로 쓰는 공식인 노멀과 라이트 벡터의 내적을 UV로 이용한다는 것이다. Shader "Custom/NewSurfaceShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _RampTex ("RampTex", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Warp noambient #pragma target 3.0 sampler2D _MainTex; sampler2D _RampTex;..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bYIo9R/btrr5U7WoQR/XdRjkSOhOUkZzhxKJUvyJ0/img.png)
Shader "Custom/NewSurfaceShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _BumpMap ("NormalMap", 2D) = "bump" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Toon Lambert #pragma target 3.0 sampler2D _MainTex; sampler2D _BumpMap; struct Input { float2 uv_MainTex; float2 uv_BumpMap; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c =..
CGPROGRAM #pragma suface surf Lambert vertex:vert void vert(inout appdata_full v){ // y축으로 1m 만큼 이동 v.vertex.y += 1; } vertex:vert로 버텍스 셰이더가 vert라는 함수 이름으로 시작된다는 것을 #pragma에서 알려주고, void로 시작하는 vert이름의 함수를 만든다. appdata_full이 보인다. 이것은 surf 함수에서 사용했떤 SurfaceOutputStandard처럼, UnityCG.cginc 파일 안에 미리 선언되어 있는 특정한 구조체이다. 이 구조체는 버텍스가 가지고 있는 정보를 구조체로 만든 것이며, 이 구조체를 메뉴얼에서 찾아보면 다음과 같이 설명하고 있다. appdata_base: ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FuK01/btrqQdUbawl/iBO7gbPlGtAa8ZvfW7SEJK/img.png)
Shader "Custom/NewSurfaceShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _BumpMap ("Bump Map", 2D) = "bump" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Test #pragma target 3.0 sampler2D _MainTex; sampler2D _BumpMap; struct Input { float2 uv_MainTex; float2 uv_BumpMap; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_..
* 그래프를 손쉽게 확인할 수 있는 사이트 https://www.desmos.com/calculator?lang=ko Desmos | 그래핑 계산기 www.desmos.com
라이팅을 커스터마이징하게 만들 수 있다. #pragma surface surf Test noambient 라이팅 이름을 Test로 지정하였다. 이름은 마음대로 지어도 상관 없다. 대신 이름에 적합한 라이팅 함수를 추가해주어야 한다. float4 LightingTest(SurfaceOutput s, float3 lightDir, float atten) { return float4(1, 0, 0, 1); } 이 함수는 무엇을 하든지 붉은 결과물을 출력하는 기능을 가진 함수이다. 또한 이어서 나오는 이름에 주의해야 한다. 저자가 설정한 커스텀 라이트 이름은 "Test" 였다. 그래서 앞에 "Lighting" 이란 이름을 추가해야 라이트 함수로 받아들인다. Lighting + (커스텀 라이트 이름) 따라서, 커..
유니티 셰이더는 ShaderLab이라고 불리는 자체 스크립트 언어를 이용하고 있다. 스크립트는 일반적인 코딩과 약간 다른 방식으로 작성되며 문법도 약간 다르다. 굳이 이렇게 스크립트로 제작된 이유는 유니티의 특성과 사용자의 편의성 때문이다. 유니티는 멀티 플랫폼 제작이 자동으로 지원되는 엔진이다. 즉, 모바일이나 pc, 콘솔기기에 따라 제작되는 셰이더가 달라야 한다. 또한 셰이더는 글미자가 있을 때와 없을 때, 라이트맵이 있을 때와 없을 때 등 여러 가지 경우의 수에 따라 제작방법이 다르다. 다양한 경우의 수를 사용자가 제각각 작성하고 관리한다면 상당한 무리가 따를 수밖에 없다. 그래서 만들어진 유니티 내부의 셰이더 스크립트가 ShderLab이다. 이 스크립트를 사용하면 다양한 경우의 셰이더 분기를 자동..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ADu8x/btrkIQxM1lb/B6a0AdnD9DGnfVBd7RGkF0/img.png)
오브젝트 데이터 받아오기 정점(버텍스: vertex) 셰이더 래스터라이져(Rasterizer) 픽셀셰이더(Pixel Shader) / 프레그먼트 셰이더(Fragmanet Shader) 1. 오브젝트 데이터 받아오기 그래픽 카드는 버텍스로 이루어진 물체의 데이터 값을 받아온다. 아직 화면에는 아무것도 존재하지 않고, 그래픽 카드 내부의 값으로만 존재하는 데이터일 뿐이다. 버텍스는 다음과 같이 필요한 정보들을 가지고 있다. 버텍스의 인덱스 넘버 (Index number) Position Normal Color 등등... 이제 그래픽 카드에서는 이 버텍스의 정보들을 가지고 버텍스들이 이어진 삼각형 면을 생성하게 된다. 오브젝트의 기본적인 형태가 갖추어졌고, 이 정보들을 버텍스 셰이더로 넘길 준비가 되었다. 2..
https://80.lv/ 80 Level 80 LEVEL is an industry-leading platform for game developers, digital artists, animators, video game enthusiasts, CGI and VFX specialists. Join us to learn about new workflows, discuss new tools and share your work 80.lv https://www.shadertoy.com/ Shadertoy BETA www.shadertoy.com http://www.fundza.com/ CG References & Tutorials www.fundza.com http://libnoise.sourceforge.n..
yield 키워드로 값을 한 번씩 바깥으로 전달할 수 있다. 그래서 값을 여러 번 바깥으로 전달할 때는 for 또는 while 반복문으로 반복하면서 yield를 사용한다. 다음은 리스트의 1, 2, 3을 바깥으로 전달하는 예이다. def number_generator(): x = [1, 2, 3] for i in x: yield i for i in number_generator(): print(i) # 결과 1 2 3 이런 경우에는 매번 반복문을 사용하지 않고, yield from을 사용하면 된다. yield from에는 반복 가능한 객체, 이터레이터, 제네레이터 객체를 지정한다. yield from은 파이썬 3.3 이상부터 사용 가능하다. yield from [반복 가능한 객체] yield from [..
1. Process Explorer https://docs.microsoft.com/ko-kr/sysinternals/downloads/process-explorer Process Explorer - Windows Sysinternals Find out what files, registry keys and other objects processes have open, which DLLs they have loaded, and more. docs.microsoft.com 2. Process Monitor https://docs.microsoft.com/en-us/sysinternals/downloads/procmon Process Monitor - Windows Sysinternals Monitor fil..