일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- c# winform
- 도커
- 유니티
- c# 윈폼
- Data Structure
- 포인터
- jupyter
- 플러터
- Unity
- git
- 다트 언어
- jupyter lab
- C언어 포인터
- docker
- 깃
- c# 추상 클래스
- Flutter
- Houdini
- C++
- c언어
- 구조체
- Algorithm
- gitlab
- HTML
- Python
- C# delegate
- github
- dart 언어
- c#
- vim
- Today
- Total
목록전체 글 (488)
nomad-programmer
vim 튜토리얼 사이트 소개 https://github.com/johngrib/simple_vim_guide GitHub - johngrib/simple_vim_guide: simple vim guide simple vim guide. Contribute to johngrib/simple_vim_guide development by creating an account on GitHub. github.com https://www.openvim.com Interactive Vim tutorial / www.openvim.com
cmake 튜토리얼 사이트 https://www.tuwlab.com/27260 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 - ECE - TUWLAB ▶ 이 글에서는 CMake 빌드 스크립트인 CMakeLists.txt 파일을 작성하는 방법에 대해 다룹니다. CMake 2.8.x 버전 기준이며, C언어 프로젝트를 기준으로 자주 사용되는 명령과 변수들을 선별하여 기능에 www.tuwlab.com https://www.tuwlab.com/27270 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 - ECE - TUWLAB ▶ 이 글에서는 복붙으로 바로 활용할 수 있는 CMakeLists.txt 빌드 스크립트의 기본 패턴을 제시합니다. 빌드 결과물이 실행 바..
비트 필드(Bit Fields)를 사용하면 구조체의 멤버가 차지하는 메모리 공간을 원하는 데로 조절할 수 있다. 예를 들면 멤버 a는 3비트만, b는 4비트만 차지하게 만드는 것이 가능하다. struct Flags { int a : 3; int b : 4; bool c : 1; }; 비트 필드를 사용하는 멤버는 정수 타입만 가능한데, 멤버의 뒤에 적힌 숫자가 멤버가 차지할 비트 수를 의미하게 된다. 즉 위의 구조체를 사용해서 변수를 정의하게 되면 다음과 같은 메모리 구조를 갖게 된다. 중간에 사용하지 않는 비트를 넣고 싶을 때는 멤버의 이름을 적어주지 않으면 된다. 이렇게 해주면 중간에 5비트는 사용하지 않은 채로 남게 된다. struct Flags { int a : 3; int b : 4; int : ..
// point vop - snippet node float pi = 3.1415926535897932384; float dx = end[0] - start[0]; float dy = end[1] - start[1]; float coord0, coord1, coord2, coord3; vector4 coords4d; if(type == "simplex" || type == "perlin"){ float total = 0; float amplitude = max_amplitude; float max_value = 0; for(int i = 0; i
포인터 변수를 정의할 때는 const를 최대 2개까지 포함할 수 있다. 그 이유는 포인터 변수는 2개의 정보와 관련이 있기 때문이다. 하나는 포인터 변수 자체에 보관된 정보다. 그리고 다른 하나는 포인터가 가리키는 변수에 보관된 정보를 말한다. 즉, 이 두 가지 정보에 대해서 const 여부를 설정할 수 있는 것이다. int a = 10; int b = 20; const int* p = &a; p = &b; // ok *p = 30; // fail 맨 앞에 const를 추가했다. 이렇게 한 것은 "p가 가리키는 변수는 const int 타입니다"라는 의미가 된다. 따라서 p가 가리키는 변수의 값을 바꾸는 것을 허용하지 않게 된다. p가 가리키는 변수는 실제로 const속성을 가졌는지는 중요하지 않다. 다..
바탕화면 설정 시에 '16비트(트루컬러)'라는 용어를 접해봤을 것이다. 16비트 컬러의 의미는 점 하나를 표시하는데 16비트를 사용한다는 뜻이다. 즉, 16비트가 표현할 수 있는 상태의 수 만큼이나 다양한 색상을 표현할 수 있다는 의미이다. 컴퓨터 상에서 색상을 표현할 때는 보통 빛의 3요소인 빨강(Red), 초록(Green), 파랑(Blue), 즉 RGB를 기본 원소로 사용한다. 이 R, G, B 각각의 밝기에 따라서 여러 가지 색깔이 만들어지는 것이다. 16비트 컬러의 경우에는 이 R, G, B 각각의 밝기가 16비트 안에 모두 포함되어야 한다. 그래서 R, G, B가 보통 5비트, 6비트, 5비트씩 할당된다 (각각 5비트씩 할당하고 1비트는 쓰지 않는 경우도 있다). 그래서 R과 B는 2의5승 단계..
#include #include using namespace std; int main() { char c = 1; short int si = 2; int i = 4; cout
나는 무엇인가를 학습할 때, 무작정 하기보다는 시간 별로 기록하면서 학습을 진행한다. 이렇게 하였을 때 장점으로는 잉여 시간을 확실하게 줄일 수 있다. 30분동안의 나의 행동을 점수로 매겨 해당 점수를 준 이유와 보완할 것을 기록한다. 그런데... 5점을 주는 경우가 별로 없다... 아주 간혹 있다... 아주 간혹. 이렇게 내가 무엇을 했는지 기록하여 본다면, 내가 학습할 대상에 더욱 집중하게 된다. 그리고 1시간 단위가 아닌 30분 단위로 한 이유는 조금 더 세세하게 기록하기 위함도 있고 1시간 동안 오직 한 가지 학습에 집중할 수가 없기 때문이다. 인간이 집중할 수 있는 시간은 15분이라고 알고 있다. 따라서 15분 단위로 기록하면 더욱 좋다. 하지만 나는 30분 단위로 하였다. 칸 수가 너무 많아져..
다른 오브젝트에 잇는 스크립트의 변수를 변경하거나 함수를 호출하는 방법을 알아보자. GetComponent 함수를 사용하는 방법과 Singleton 기법을 사용하는 방법이 있다. 2개의 오브젝트 obj1, boj2를 만들고 obj1에는 TextScript1.cs 스크립트를 컴포넌트로 추가하고 obj2에는 TextScript2.cs 스크립트를 컴포넌트로 추가할 것이다. 그리고 TextScript1.cs 스크립트 안에서 obj2의 컴포넌트인 TextScript2.cs 스크립트의 변수를 변경하고 함수를 호출하겠다. GetComponent 함수 사용하기 TextScript1 스크립트를 드래그하여 Hierarchy 뷰에 있는 obj1 오브젝트에 놓는다. 마찬가지로 TextScript2 스크립트를 드래그하여 Hie..
유니티 관련 자세한 설명은 역시 유니티 공식 문서를 보는 것이 최고. https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html 이벤트 함수 실행 순서(Execution Order of Event Functions) - Unity 매뉴얼 Unity 이벤트 함수는 사전에 정해진 순서대로 실행됩니다. 실행 순서는 다음과 같습니다. docs.unity3d.com 간략하게 설명하자면... 게임이 시작될 때, 초기화해야 하는 것들을 이곳에 넣으면 된다. Start() 함수와의 차이점은 게임이 실행될 때, 단 한번 실행되는 것은 두 함수 모두 같은데 Awake() 함수가 Start() 함수보다 한박자 빠르다.
일반적인 메쉬 오브젝트라면 3D 프로그램에서 UV를 다시 펴서 import 하는 것으로 늘어난 텍스처를 해결할 수 있다. 하지만 예를 들어 게임에서 실시간으로 높은 지형이 튀어 올라오는 기능을 가지고 있다고 생각해보자. 혹은 눈발을 헤치고 지나가면서, 실시간으로 눈이 파이는 효과를 만들어야 한다고 생각해 보자. 그렇다면 미리 옆면에 대응되는 UV를 만들어 놓을 수가 없다. 그러면서도 옆면에는 세로로 주욱 늘어나지 않은, 제대로 된 텍스처가 입혀지도록 만들고 싶다고 생각해보자. UV가 따로 필요 없으면서 어디라도 텍스쳐가 늘어나지 않고 제대로 입혀지는 기능이 Triplanar이다. 이 기술의 핵심은 World Position을 UV로 사용하는 것이다. Shader "Custom/Triplanar" { Pr..
굴절 효과를 적절하게 사용하면 아주 멋진 효과를 낼 수 있다. 유리나 물에도 응용할 수 있다. 일반적으로 이 효과를 만들 때 프레그먼트 셰이더를 사용한다만 서피스 셰이더로도 만들 수 있다. Shader "Custom/Refraction" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _RefStrength("Refraction Strength", Range(0, 0.1)) = 0.05 } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent"} zwrite off GrabPass{} CGPROGRAM #pragma surface surf nolight noambient alpha:f..