분류 전체보기 32

2024.7.14(일) - 10장 출력 병합기

출력 병합기는 GPU 파이프라인의 마지막 단계.Z-버퍼링뷰포트 내의 두 삼각형이 (x, y) 좌표의 픽셀을 놓고 경쟁한다. 이 픽셀은 결국 파란색으로 칠해짐.→ 파란색 삼각형이 빨간색 삼각형 앞에 있기 때문이다.이러한 결정은 두 삼각형의 z 값 비교를 통해 이뤄진다.Gl은 컬러 버퍼, 깊이 버퍼, 스텐실 버퍼를 제공하는데, 이를 합해프레임 버퍼라고 한다.컬러 버퍼: 스크린의 2차원 뷰포트에 나타날 픽셀 전체를 저장하는 메모리 공간깊이 버퍼: z-버퍼라고도 불림. 컬러 버퍼와 동일한 해상도를 가지며 현재 컬러 버퍼에 저장되어 있는 픽셀의 z 값을 저장함.(a) 빨간색, 파란색 순서로 렌더링이 이루어짐.(b) 파란색, 빨간색 순서로 렌더링이 이루어짐.컬러 버퍼와 깊이 버퍼를 초기화하는 GL 프로그램.glDe..

2024.7.13(토) - 9장 라이팅

라이팅: 빛과 물체 간 상호작용 처리하는 기술퐁 모델: 퐁이 제안한 라이팅 기법퐁 모델우선 광원을 정의한다.점 광원: 3차원 공간의 한 점으로부터 전방위로 빛이 발산되는 것.방향성 광원: 태양과 같이 물체 표면의 여러 점에 입사하는 햇빛의 방향은 서로 평행함. 이런 광원을 방향성 광원이라고 함.물체 표면으로 들어오는 빛과 카메라를 향해 나가는 빛 사이의 관계를 BRDF로 정의해야 한다.퐁 모델은 극단적으로 BRDF를 단순화했다.퐁 모델은 물체 표면에서 감지되는 색상을 디퓨즈, 스페큘러, 앰비언트 반사와 발산광 네 가지 항목으로 분리해서 처리한다.디퓨즈 항스페큘러 항엠비언트 항발산광디퓨즈 항디퓨즈 항은 램버트의 법칙에 따라 정의된다.램버시안 표면 혹은 디퓨즈 표면이라 불리는 이상적인 표면으로 들어온 빛은 ..

7.11(목) - OpenAPI(2)

나에게 카카오톡 메시지 보내기접근 권한 설정 카카오톡 메시지 API 사용 권한 받기URL 구성하여 요청하기client_id 값은 ‘REST_API 앱 키’이며, 성공 시 위와 같이 확인 가능.https://kauth.kakao.com/oauth/authorize?client_id=→ 사이트에 연결할 수 없음 메시지는 무시하면 됨.code= 뒤의 값을 사용할 것임. 메모장에 옮겨 적었음. → refresh token과 access token 발급 완료되어 결과 확인.expires_in: 토큰은 일정 시간이 되면 만료가 됨. 그 일정 시간을 의미하는 것.토큰이 일정 시간이 흘러 만료되면, ‘refresh_token’으로 ‘access_token’ 재발급 받음.refresh_token도 유효한 시간이 있음.t..

파이썬 & AI 2024.07.14

2024.7.13(토) 8장 - 이미지 텍스처링

이미지 텍스처래스터라이저가 출력하는 프래그먼트별 애트리뷰트는 대체로 노멀과 텍스처 좌표를 포함한다. 이들을 이용해 프래그먼트 쉐이더는 색상을 계산한다. 그렇게 하기 위해서는 라이팅과 텍스처링이 필요한데, 8장에서는 텍스처링에 대해 다룬다.  텍스처는 일반적으로 배열 구조를 가지는데, 이 배열이 색상 정보를 저장하고 있다면 이를 이미지 텍스처라고 부른다. 텍스처는 텍셀로 구성된다. 각 텍셀 위치는 그 중심의 2차원 좌표로 표현이 가능하다.위 이미지 (a)에서 왼쪽 아래 모퉁이 텍셀의 좌표는 (0.5, 0.5), 그 오른쪽 텍셀의 좌표는 (1.5, 0.5)이다.텍스처링은 물체 표면에 벽지 바르듯 텍스처를 입히는 것이다.(a)의 이미지가 원통면에 입혀진 것이 (b)인데, 이를 위해서는 원통면 폴리곤 메시의 각..

2024.7.8(월) 7장 - 래스터라이저

래스터라이저: 프리미티브 조립 및 래스터화 담당프리미티브: GPU 파이프라인이 처리할 기하적인 개체들래스터화: 정점 쉐이더가 출력한 정점들은 프리미티브로 다시 조립됨. 이 프리미티브는 스크린에 그려질 형태로 변환된 후 프래그먼트로 분해된다.클리핑(Clipping)222 크기의 클립 공간 뷰 볼륨 바깥에 놓인 폴리곤을 잘라내는 작업t1: view frustum 바깥에 위치. 제거t2: 다음 단계로t3: 이 경우 꼭짓점 하나는 view frustum 안에 있지만 나머지는 바깥에 위치. 클러핑 작업이 필요함.원근 나눗셈(Perspective Division)네 번째 행은 아핀 변환과는 달리 (0 0 0 1)이 아니라 (0 0 -1 0)이다.따라서 변환된 정점의 w 좌표는 -z가 된다. 대개 1이 아니다.투영 ..

2024.7.11 스터디 - DreamHack

개발자 도구 실습devtools-sources | 워게임 | Dreamhack | 워게임 | Dreamhack devtools-sources개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아보세요. 플래그 형식은 DH{...} 입니다. Reference Tools: Browser DevToolsdreamhack.io 문제 파일 다운로드(압축 안 풀고 뻘짓 조금 함)→ 개발자 도구 오픈→ ctrl + shift + f검색 기능 이용해 플래그 획득

2024.7.11 스터디 - Bandit

셸 스크립트 만들기실행 후 셸 스크립트 제거됨. 사본 보관*또 cron파일이게 무슨 소리인고.. /var/spool/bandit24/foo 디렉토리 안 모든 스크립트를 실행하고 지운다네요 일단 mkdir로 /tmp/dPdud 하나 만들고셸 스크립트 파일도 만듦 💡 cat /etc/bandit_pass/bandit24 > /tmp/dPdud/pw.txt이렇게 쓰면 bandit24 패스워드를 /tmp/dPdud/pw.txt 라는 새로운 파일로 저장하겠다는 뜻 chmod 명령어로 권한 추가 생성된 파일 확인 후 다음 레벨 비밀번호 획득

2024.7.9 스터디 - Bandit

bandit20 계정에서 bandit21 계정에 bandit20 비밀번호 전송해 맞다면, bandit21 계정 비밀번호 획득 가능setuid 활용setuid 적용된 suconnect 파일새 터미널 오픈nc -lnvp [포트번호] 옵션n: DNS 이름 해석 비활성화, IP주소 연결 수락, 표시p: 포트에서 연결 수락하게 함v: 상세 정보 표시 설정l: 리스닝 모드 활성화./suconnect [포트번호] 통해서 연결 시간 기반 프로그램 cron에서 일정한 간격으로 프로그램 실행됨./etc/cron.d/ 살펴보기cron: 스케줄 프로그램. 일정한 시간마다 특정 프로그램, 명령어 실행하게 해줌.bandit21@bandit:/etc/cron.d$ cat cronjob_bandit22 @reboot bandit22..

2024.7.6(토) 6장 OpenGL ES와 쉐이더

OpenGL ES제공되는 API와 쉐이딩 언어 알아야 함.강의에서는 3.0 버전 이용Shading LanguageGPU 전용 언어행렬, 벡터 지원해주는 특별한 타입 O→ vec4, ivec3, mat3, mat4 등Vertex ShaderAttributes: 위치와 같이 정점에 저장된 정점 별 데이터Uniforms: 월드 변환, 뷰 변환, 투영 변환과 같이 모든 정점마다 유니폼하게 적용되는 데이터clip-space positionL 내장 변수에다 써 두기 = gl_Position애트리뷰트가 m개인 경우, 각각의 위치는 0,1,2,…,m-1로 표기됨.layout이라는 키워드를 사용해 position, normal, textCoord위치를 각각 0,1,2로 지정layout(location = 0) in ve..

2024.7.4(목) 5장 - 정점 처리

vertex shader → rasterizer → fragment shader → output merger의 과정 거침 GPU 렌더링 파이프라인→ 한 단계의 결과물이 다음 단계 입력으로 사용되는 일련 데이터 처리 단계 vertex normals = n[L|t]n = Ln+t로 변환여기서 n은 벡터. t 무시 가능 삼각형 normal 이용해 월드 변환 적용 (a) non-uniform scaling빨간 선분은 xy 평면에 수직인 삼각형 단면, n은 삼각형의 노멀 나타냄.초록 선 - 노멀에 수직이 아닌 예기치 않은 결과가 나옴.L = 아핀 변환 행렬에서 좌측 상단 누적된 선형 변환 행렬 의미함. (b) L의 역전치 행렬 적용.삼각형과 수직 이룸반드시 정규화 과정을 거쳐야 단위 벡터가 된다.View Tran..