분류 전체보기 64

[python] 백준 1912 : 연속합

문제 링크 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 처음에는 dp 테이블을 dp[n][m] : n부터 m까지의 합 으로 정의했고 dp[n][m] 이 dp[n+1][m] + 현재 위치의 값 이라는 걸 이용해서 푸는 문제인 줄 알았다.. length = int(input()) A = list(map(int,input().split())) dp =[[-1001 for k in range(length)] for i in range(length)] f..

알고리즘 2023.07.16

#12 odyssey 개발일지 : 셰이더 그래프로 지형 외각선 만들기

이제 셰이더를 통해 바다와 환경광을 구현하려고 한다... 원래는 그러려고 했는데 내가 모르는 사이에 SRP라는 렌더링 파이프라인이 나왔다. 고3때 갑자기 (유니티도 모르면서) 셰이더에 관심이 생겨서 급발진으로 책을 두권을 샀는데.. 유니티 쉐이더 스타트업은 반도 안읽었고 유니티 물리 기반 셰이더 개발은 펼치지도 않음..^___^ 그랬는데 그새 새로운 기술이 생기다니.. SRP 원래는 바다 셰이더를 구현하려고 이것저것 자료를 찾아봤는데 셰이더를 블록코딩마냥 노드로 연결해서 구현하길래 찾아보니깐 SRP라는게 새로 생겼다. 원래는 유니티에서 서피스 셰이더와 버텍스&프래그먼트(픽셀) 셰이더를 지원했는데 2018년부터 Scriptable Render Pipeline 라는 새로운 렌더링 파이프라인을 공개했다. 그리..

odyssey 2023.06.24

#11 odyssey 개발일지 : parallax scrolling

게임 시스템과 뼈대는 얼추 갖춰진 것 같아서 이제 컨셉아트에 맞춰서 그래픽 부분을 끼워넣으려고 한다.. parallax scrolling 구름이나 바다같은 소재는 뒤에 있고, 어떤 나무는 가까이, 어떤 나무는 멀리 있다. 2d에서 이런 원근감을 나타내기 위해, 멀리있는 소재는 느리게, 가까이 있는 소재는 빠르게 이동시켜서 원근감을 나타내는데 좀 찾아보니깐 이런 기법을 parallax scrolling 이라고 부르는 것 같다. 게임개발 뿐만아니라 웹 개발에서도 많이 사용하는듯 하다. 구현 https://www.youtube.com/watch?v=zit45k6CUMk 이 유튜브 강의를 참고해서 만들었다. using System.Collections; using System.Collections.Generic..

odyssey 2023.06.22

5. 렌더링 파이프라인

렌더링 파이프라인이라 3차원으로 만들어진 리소스를 2차원인 화면에 렌더링 하는 과정을 말한다. 입력 조립기 단계(Input Assembler) 입력 조립기 단계에서는 메모리에서 정점과 인덱스와 같은 기하 자료를 읽어서 기본 도형을 조립한다. - 정점(버텍스) 수학적으로 정점은 두 변이 만나는 점이다. 그러나 Direct3D의 정점은 도형의 꼭짓점 이상의 의미를 가지는데, 공간적 위치 외에도 정점에 법선 벡터를 추가하거나 텍스처 좌표를 추가하는등 다양한 커스텀 정점 형식이 있다. - 인덱스 3차원 물체의 기본 요소는 삼각형이다. 이러한 삼각형을 만들기 위해 정점 목록을 만들어 두고, 해당 정점들을 어떤 순서로 사용할지 인덱스를 적절히 나열함으로써 삼각형을 정의한다. 정점 셰이더 단계 입력 조립기 단계에서 ..

4. Direct3D의 초기화와 Tutorial02 코드 분석1

https://github.com/walbourn/directx-sdk-samples GitHub - walbourn/directx-sdk-samples: This repo contains Direct3D 11, XInput, and XAudio2 samples C++ samples from the legacy D This repo contains Direct3D 11, XInput, and XAudio2 samples C++ samples from the legacy DirectX SDK updated to build using the Windows 10 SDK - GitHub - walbourn/directx-sdk-samples: This repo cont... github.com 여기에 Direc..

DirectX11 개발 환경 설정

visual studio로 DirectX를 개발하기 위해 우선 개발 환경을 설정했다! https://developer.microsoft.com/ko-kr/windows/downloads/windows-sdk/ Windows SDK - Windows 앱 개발 Windows 11용 Windows SDK에는 Windows에서 실행되는 앱을 만들 때 사용할 수 있는 헤더, 라이브러리 및 도구가 포함되어 있습니다. developer.microsoft.com 우선 여기서 windowSDK를 설치했다. DirectX11부터는 windowSDK에 기본으로 들어가 있다고 한다.. 그리고 처음에 좀 해맸는데.. 비주얼 스튜디오에서 빈 프로젝트를 생성한 다음에 프로젝트 - 속성- VC++ 디렉터리로 가서 포함 디렉터리에서 ..

4. Direct3D 기본 지식

COM COM(Component Object Model)은 DirectX의 언어 독립성과 하위 호환성을 가능하게 하는 기술이다. 이게 뭔가 해서 GPT한테 물어보니... COM은 Windows 운영 체제에서 구성 요소를 만들고 통신하는 데 사용되는 기술이고, 개발자가 구성요소를 쉽게 생성하고 관리할 수 있게 도와준다고 한다.. 그리고 COM 인터페이스들은 이름이 대문자 I로 시작한다. 텍스처 2차원 텍스처는 사실상 자료 원소들의 행렬이다. 2차원 텍스처는 다양한 용도로 쓰이는데, 대표적으로 2차원 이미지 자료를 저장하거나, 텍스처의 각 원소가 3차원 벡터를 담을 수도 있다. 이후에 나올 깊이 버퍼도 텍스처의 한 종류이다. swap chain과 페이지 전환 애니메이션이 끊기지 않고 이어지기 위해, 전면 버..

#10 odyssey 개발일지 : 오브젝트 풀링 분리

저번 글에 이어서 오브젝트 풀링을 하는 부분은 떼어서 따로 분리하려고 한다. 기존 TerrainManager using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Pool; public class TerrainManager : MonoBehaviour { public ObstacleGenerator obstacleGenerator; public List terrainPrefabs = new List(); public List terrainDatas = new List(); public TerrainPool terrainPool = new TerrainPool(); private Dict..

odyssey 2023.05.07

#9 odyssey 개발일지 : 동적 지형생성과 오브젝트 풀링

(드디어) 중간고사가 끝나서 다시 스터디와 개발을 시작하려고 한다! 지형을 어떻게 만들지 생각해 봤는데... 미리 여러 패턴의 지형을 생성해놓고, 런타임중에 적당히 이어붙이려고 한다! 우선 테스트를 위해 적당한 지형 메쉬 3개를 만들어서 프리팹화 했다 위의 세 타입의 지형중 랜덤하게 하나를 뽑아서 이어붙인다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class TerrainManager : MonoBehaviour { public ObstacleGenerator obstacleGenerator; public List terrainPrefabs = new List(); public List te..

odyssey 2023.05.06