코딩 테스트 치고 나오면서 C++에 대한 기초가 부족한거같아서 C++을 한번 완전 기초부터 다시 해보려고 합니다. 그리고 테스트 준비하면서 공부한걸 다시 정리해서 올릴 생각입니다. 공부도 먼저 책으로 공부 한다고 포스팅은 공부를 다하고 정리하면서 적습니다. 너무 포스팅을 미뤘네요. C++ 기초전에 C 부분과 기초이론부분을 좀 더 공부하고 왔습니다. 계산적 사고 Computational Thinking 입력 - > 알고리즘 - > 출력 (와 같은 형식은 다 알고리즘이라고 할 수 있지만) 자신이 원하는 답을 도출해낼 수 있는 알고리즘을 만들어야합니다. 문제를 해결 할 수 있는 단계를 찾는 행위 컴퓨터의 작동원리 컴퓨터 (정보화기기) - 하드, 소프트 구성 요소(참고) 중앙 기억 장치 CPU 주 기억 장치 R..
While문 ~scanf가 가능해서 사용해봤습니다. A+B - 5 int a,b; while(~scanf("%d %d", &a,&b)){ if(a+b != 0) printf("%d\n", a+b); } A+B - 4 int a,b; while(~scanf("%d %d", &a,&b)){ printf("%d\n", a+b); } 더하기 사이클 int num, firNum, secNum, sumNum, count, result; result = 0; count = 0; scanf("%d",&num); if (num < 10) num *= 10; result = num; while (1) { firNum = result / 10; secNum = result % 10; sumNum = firNum + secN..
C++ 출력만 해보고 앞으로 C#으로 해보겠습니다. 유니티로 취업을 할거고 계속 사용해서 친해져야하는 언어이므로 앞으로 문제는 C#으로 풀어보겠습니다. 두 수 비교하기 using System; class Program { static void Main(){ string str; int a,b; str = Console.ReadLine(); string[] strArr = str.Split(' '); a = Convert.ToInt32(strArr[0]); b = Convert.ToInt32(strArr[1]); if(a < b) Console.WriteLine(""); else if(a == b) Console.WriteLine("=="); else Console.WriteLine("잘못된 입력 값입니다..
보스 부분은 아직 보완해야할 부분이 많아서 건너띄고 리팩토링 후 포스팅할 생각입니다. 그럼 그전에 셰이더 부분부터 보겠습니다. 계산을 하는 부분입니다. 앞전에 셰이더 튜토리얼에서 작성한 부분입니다. 기본 툰 셰이더는 텍스쳐로 값을 받아서 적용시켜야해서 기존 툰 셰이더보다 코드로 툰 셰이더를 작성해서 사용해보자라는 취지로 만들었습니다. 왼쪽이 기존 셰이더인 그림자를 적용 안한 모습입니다. 오른쪽은 어두운면엔 간접광인 엠비언트 라이트를 추가하고 그림자와 빛 사이 스무브 스텝(smoothstep) 함수를 사용하여 매끄럽게 블렌딩해줬습니다. 다음은 정반사(Specular reflection)와 림 라이트 (Rim lighting)을 만들어서 적용 시켰습니다. 정반사는 보는 방향인 즉, 카메라가 보는 방향을 따라..
팀프로젝트를 마무리 단계는 코드를 분석하여서 정리하기로 하였습니다. 전 플레이어 연출인 카메라 부분 및 낙하 판정을 하는 부분을 분석해보려고 합니다. 협업한 친구가 코드를 잘 정리하여 보내주었습니다. 굿 카메라가 벽에 닿을 시 처리하는 부분 /*초기 값 설정*/ private float defaultPosition; private float targetPosition; public Transform cameraTransform; defaultPosition = cameraTransform.localPosition.z; cameraTransform.localRotation = Quaternion.identity; cameraTransform.parent = pivotTransform; // TPS 카메라 ..
주말동안 알고리즘 책을 읽고 나서 문득 생각해보니 코드테스트 전 합격 여부인 포폴이 중요한데 포폴을 좀 더 정리해야겠다고 생각해서 문서를 보강하기로 했습니다. 먼저 애너미 구조 설계를 상속 형태로 리팩토링, AI를 Nav Mesh Agent로 구현, 애너미 애니메이션을 살펴보겠습니다. 리팩토링전 스크립트입니다. 보기와 같이 fleldOfView와 같이 외부 스크립트 의존성이 높고 전체적 가독성이 떨어지며 확장성, 다양성이 좋지 못합니다. 리팩토링 후 스크립트입니다. 가독성은 말할 것도 없이 좋아졌고 MeleeEnemy라는 파생 스크립트로 근거리 애너미를 만들었습니다. 다양성이 좋아졌습니다. 확장 또한 가능하게 세분화한 상태입니다. 상속을 사용 시 협업 시 유리합니다. EnemyAttack 이라는 함수를 ..
전에 한번 공부해야겠다고 생각해서 작성했습니다. TCP(Transmission Control Protocol) - 서버와 클라이언트간에 데이터를 신뢰성 있게 전달 데이터를 송신할 때 마다 확인 응답을 주고 받는 절차 (TCP 3 Way-Handshake & 4 Way-Handshake)가 있어서 통신의 신뢰성을 높인다. 3 Way-Handshake는 TCP / IP 네트워크에서 서버와 클라이언트를 연결하는데 사용되는 프로세스입니다. 접속 요청 프로세스 A가 연결 요청 메시지 전송 (SYN) 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어 달라는 메시지 전송 (SYN + ACK) 접속 요청 프로세스 A가 수락 확인을 보내 연결을 맺음 (ACK) 4 Way-Hand..
렌더링 기초는 앞 셰이더 포스팅에도 했지만 렌더링 파이프라인은 중요하기 때문에 한번 더 집고 넘어가겠습니다. 유니티 셰이더 파이프라인을 간단하게 보고 자세한건 따로 포스티하겠습니다. 대략적으론 3D 물체를 2D 화면까지 표현하는 과정인데 https://youtu.be/KnueAgpUL3Y 설명보단 영상이 좋을꺼 같아 준비했습니다. 이 포스팅은 위 영상을 토대로 갑니다. 설명은 1분부터 5분까지입니다. 이제 유니티에서 프로젝트를 생성해보겠습니다. 생성 전에 버전은 2019.3 버전 이상을 사용해야합니다.19.4버전을 사용하겠습니다. 템플릿은 Universal RP(Render Pipeline)을 클릭하고 생성합니다. 아래 파일을 삭제해줍니다. Edit -> Project Settings -> Graphic..
Shadertoy 튜토리얼 한글번역 셰이더 토이 WebGL 기반, OpenGL 베이스로된 사이트입니다. 튜토리얼을 진행해보겠습니다. 빈화면 "main" 함수는 쉐이더 효과를 출력하기 위해서 매초 마다 수십회 호출합니다. 컴퓨터 시스템은 초당 60프레임(60FPS)를 출력하려고 노력합니다. 하지만 GLSL 스크립트가 계산이 빡세지면 이 숫자는 더 낮아질 수 있습니다. (FPS는 화면 아래쪽 정보바에 표시됩니다.) 균일 색상 frageColor는 쉐이더의 출력입니다. 이 값은 화면에 보여지는 이미지를 결정합니다.이 쉐이더는 이 값을 노란색으로 지정합니다. vec4( r, g ,b , a); 값입니다. 뒤에 값에 넣는거에 따른 색이 바낍니다. void mainImage( out vec4 fragColor, i..