묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (1) - 3D 그래픽스, OpenGL, 콜백 함수, 컬러 이론
비주얼 스튜디오 파일
3:18의 파일들이 어디있는지 모르겠습니다. visual studio는 설치되어 있는데, 제가 이해하기로는 컴퓨터에 설치되어 있는 비주얼 스튜디오 파일 안에 저러한 폴더들이 있다는 것으로 이해했는데 폴더들이 보이질 않습니다. glfw 폴더들은 잘 다운로드받은 것 같고, 혹시나 해서 비주얼 스튜디오를 다시 다운받아보기도 했는데 해결되지 않네요. 사진은 파일 탐색기에서 비주얼 스튜디오를 검색하고 연 폴더들입니다.
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (6) - 쉐이딩 기초, 퐁 리플렉션 모델, 블린-퐁 쉐이딩
RGB 값 관련 질문드립니다.
light.position = {-3.0f, 3.0f, 3.0f, 1.0f}; light.ambient = {0.2f, 0.2f, 0.2f, 1.0f}; light.diffuse = {5.0f, 5.0f, 5.0f, 1.0f}; light.specular = {7.0f,7.0f, 7.0f, 1.0f}; light.att = {1.0f, 0.2f, 0.2f, 1.0f}; material.ambient = { 1.0f, 1.0f, 1.0f, 1.0f }; material.diffuse = { 1.0f, 1.0f, 1.0f, 1.0f }; material.specular = { 1.0f, 1.0f, 1.0f, 1.0f }; material.shineness = 32.0f;강의에서 렌더링에 사용된 광원, 매터리얼 파라미터 값들입니다. RGB를 나타내는 값은 일반적으로 0.0~1.0 사이의 float 값을 써서, 이를 0~255 정수범위로 매핑해서 사용한다고 알고 있습니다.하지만 강의에서는 1.0 이 넘는 float 값을 그대로 사용하는 상황이여서, 이게 무슨 차이인지 궁금하여 문의 남깁니다.
-
미해결게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (6) - 쉐이딩 기초, 퐁 리플렉션 모델, 블린-퐁 쉐이딩
vert_phong.vert negate 질문
학습 관련 질문 ❓ 을 남겨주세요. 상세히 작성하면 더 좋아요!출장이 잦아서, ✍ 답변에 시간이 좀 걸릴 수는 있습니다. 양해 바랍니다. 🏃 안녕하세요, 강의를 듣고 직접 구현해보며 연습중인데 한 가지 궁금한게 생겨 질문 드립니다. 앞서 진행했던 강의의 vertex shader와 마찬가지로, z-negate 를 해주어야한다고 생각해서 버텍스 쉐이더에서 vPos를 구하고 vPos.z *= -1 을 해주고 있었습니다. 하지만 강의 소스코드에는 이 negate해주는 부분이 없는게 왜인지 잘 모르겠습니다.강의 소스코드에는 C++ 코드 상에서 negate되어지는 부분이 있는걸까요? 저는 negate하지 않으면 아래와 같은 결과로 렌더링됩니다. vertex shader에서 z-negate하면 잘 나옵니다. #version 410 core struct Light { vec4 position; vec4 ambient; vec4 diffuse; vec4 specular; vec4 att; }; struct Material { vec4 ambient; vec4 diffuse; vec4 specular; float shineness; }; in vec4 aPos; in vec4 aNorm; uniform mat4 uMat; uniform Light light; uniform Material material; out vec4 vColor; void main() { vec4 vPos = uMat * aPos; vec4 vNorm = transpose(inverse(uMat)) * aNorm; vec3 N = normalize(vNorm.xyz); vec3 L = normalize(light.position.xyz - vPos.xyz); vec3 V = vec3(0.0f, 0.0f, 1.0f); vec3 R = reflect(-L,N); vec4 ambient = light.ambient * material.ambient; float d = length(light.position.xyz - vPos.xyz); float denom = light.att.x + light.att.y * d + light.att.z * d * d; vec4 diffuse = max(dot(L,N), 0.0) * light.diffuse * material.diffuse / denom; vec4 specular = pow(max(dot(R, V), 0.0), material.shineness) * light.specular * material.specular / denom; vColor = ambient + diffuse + specular; vPos.z *= -1; gl_Position = vPos; }
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (3) - 애니메이션, depth 개념, Z 버퍼
glm-tri.cpp 의 glVertexAttribPointer 질문입니다.
glVertexAttribPointer(locPos, 4, GL_FLOAT, GL_FALSE, 0, glm::value_ptr(vertPos[0])); 위와 같은 형태로 소스코드에 배포가 되어있는데요. 삼각형이 출력되지 않아서 여러가지 확인해보면서 내용을 찾아보았습니다. 우선 glVertexAttribPointer 의 마지막 인자는 배열 내 데이터의 시작 지점(offset)을 나타내고, 이를 통해 GPU가 정점 데이터 배열에서 해당 속성(attribute)을 어디서부터 읽어야 할지 알게한다고 보았습니다. 소스 코드 상의 glm::value_ptr(vertPos[0]))은 vertPos[0]이라는 벡터의 메모리 주소를 반환 하므로, 오프셋 값을 나타낸다고 볼 수 없는 것 같아 다소 이해가 가지 않습니다. 또한 5번째 인자인 stride에 0 이 기입되는 것이 이해가 가지 않습니다.stride는 버텍스 데이터 배열 내에서 데이터들이 몇 개씩 한 덩어리인지를 나타내주는 인자로 이해했는데 0 이 아니라, sizeof(glm::vec4) 가 옳은 표현이 되는 것 아닌가요?? 실제로, glVertexAttribPointer(loc, 4, GL_FLOAT, GL_FALSE, sizeof(glm::vec4), (void*)0); 로 바꾸어 빌드했더니 삼각형이 올바르게 나왔습니다. 바쁘시겠지만 확인해주시면 감사하겠습니다.
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (9) - 스텐실, 커브&서피스, glTF
vulkan 강의 일정
혹시 vulkan 강의는 언제쯤 계획하고 계신지 알 수 있을까요?
-
미해결게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (4) - 좌표 변환, 회전, 가상 트랙볼
외적 공식 문의
강사님 궁금한 점이 있어서 문의 드립니다. 외적 공식에 대해서 이 부분이 맞는지 확인 부탁 드립니다.제가 알고 있기론 가운데 j 행렬에서는 +가 아니라 - 부호가 되어야 맞는 것으로 알고 있는데 이 부분에 대해서 문의 드립니다. 제가 잘못알고 있는게 아닌지에 대해서 궁금해서 문의 드립니다.
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (2) - 프로그래머블 파이프라인, 기하학 기초, 삼각형 출력
hello shader 프로그램 실행이 안됩니다.
강사님 제공된 코드를 실행을 해봤을 때 삼각형이 보이지 않고 빈 화면만 나오는 문제가 있습니다. 따로 glGenBuffers를 이용해서 버퍼를 생성하고 데이터를 바인딩을 했을 때에는 삼각형이 나오는 것을 확인을 했습니다. 이렇게 해결을 하는 것이 맞는지에 대해서 궁금합니다. 혹시 버퍼를 생성 하지 않고 진행을 하는 방법이 있는지 궁금합니다.
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (5) - 3D 카메라 뷰잉, 프로젝션, MVP 변환
뷰포트 간의 z-index
안녕하세요.OpenGL 화면 내에서 다중창 기능을 구현을 하고 싶은데요.뷰포트들 간에 서로 영역이 겹쳤을 때 먼저 그려지고 나중에 그려지는 z-index 처리할 수 있는 방법이 따로 있나요?그리고 뷰포트 말고 OpenGL에서 다중창을 구현하는 특별한 방법이 있을까요?답변 부탁 드립니다.감사합니다.
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (5) - 3D 카메라 뷰잉, 프로젝션, MVP 변환
scissor box에서의 테두리 라인 그리기
안녕하세요.예제에서 보면 scissor box 로 미니맵을 구분한 다음 glClearColor로 배경색상을 다르게 그렸는데요. 좀 더 구분이 명확해질 수 있게 scissor box 외곽선 테두리를 그리는 방법이 따로 있을까요? 만약 없다면 그냥 뷰포트 내부에서 외곽선 픽셀 계산해서 glDrawArrays함수로 GL_LINES 으로 그리면 될까요?답변 부탁 드립니다.감사합니다.
-
해결됨OpenGL 쉐이더 (2) shader 3D 그래픽스 - 프로그래머블 파이프라인, 기하학 기초, 삼각형 출력
#include "./common.c"오류
오류 LNK2005 getBaseName이(가) common.obj에 이미 정의되어 있습니다. 의 오류가 나옵니다. main이랑 같은 위치에 common.c를 두었는데 어떻게 해결해야하나요?
-
해결됨OpenGL 쉐이더 (3) shader 3D 그래픽스 - 애니메이션 원리, depth 개념, Z 버퍼
32-6 OpenGL Z 버퍼 - Depth 설정 관련 질문
안녕하세요.glEnable(GL_DEPTH_TEST); <-- 이 구문이 drawFunc() 안에 꼭 들어가야 하는 이유가 있나요?이렇게 하면 드로잉 할 때 마다 실행이 되는데요.main 함수나 initFunc 함수 안에 넣어서 한 번만 실행해도 괜찮은가요?답변 부탁 드립니다.
-
해결됨OpenGL 쉐이더 (2) shader 3D 그래픽스 - 프로그래머블 파이프라인, 기하학 기초, 삼각형 출력
22-6 varying color 프로그램 관련 질문
vertex shader의out vec4 vColor 값이 fragment shader의in vec4 vColor 로 어떻게 매칭이 되는건지 좀 궁금합니다. 일단 제가 추측한바로는두개다 변수명이 vColor 같기 때문에 매칭이된다.선언된 순서에 따라vertex shader 에서 out vColor 이 0번 varying register에 등록이 되고, fragment shader에서 in vColor 이 0번 varying register에 등록이 되어서 매칭이 된다.이렇게 가정할 수 있을것 같은데, 2번 같은 경우는 이전 설명에서 GPU에서 대부분 순서대로 할당하지만, 임의로 할당할 수 있다고 하였고, 또한 layout 같은 키워드도 있어서 순서 보장이 안될 것 같아서 변수명으로 매칭되는 1번이지 않을까 싶은데, 제가 이해한게 맞는지 궁금합니다.그리고 추가 질문으로 fragment shader의 out으로 FragColor를 지정하게 되어서 여기에서 지정된 컬러가 FrameBuffer에 씌여진다고 하셨는데, fragment shader의 out이 그림상에는 1개밖에 없는데, 여러개 지정가능하다고, 얼핏 강의에서 들은것 같은데, 관련된 부분은 추후 강의에서 확인이 가능한지 궁금합니다.그리고 만약 여러개 지정이 가능하면 첫번째 out만 무조건 FrameBuffer에 씌여지는건지도 궁금합니다.감사합니다.
-
해결됨OpenGL 쉐이더 (4) shader 3D 그래픽스 - 좌표 변환, 회전, 가상 트랙볼, VBO, IBO
쉐이더에 연산 코드 선언
안녕하세요..!지금까지 강의를 보고 있는데, 생각보다 쉐이더 파일에 특별한 코딩을 안 하고 있다는 걸 느꼈습니다.막연하지만 41c-rotate3.cpp에서 볼 수 있는 행렬 연산 같은 것들을 쉐이더 쪽에서 처리하지 않는 이유가 있는지 궁금합니다..!
-
해결됨OpenGL 쉐이더 (3) shader 3D 그래픽스 - 애니메이션 원리, depth 개념, Z 버퍼
33-3 피라미드 만들기 - face 생성 시 질문
안녕하세요..!3:15에 face를 형성하기 위해서 꼭지점 잇는 순서가 나오는데요,f4, f5 생성 시에 v1로 시작한 이유가 있는지 궁금합니다..!v2,3,4로 시작할 수는 없나요?
-
해결됨OpenGL 쉐이더 (2) shader 3D 그래픽스 - 프로그래머블 파이프라인, 기하학 기초, 삼각형 출력
21-8 layout 키워드 : 레지스터 개수 파악
안녕하세요1) layout으로 로케이션 위치의 값이 하드웨어 스펙과 일치해야할 것 같은데요, 하드웨어 스펙의 어떤 부분을 봐야하는지 궁금합니다2) 로케이션을 지정해야하는 실무 케이스가 궁금합니다..! 어떤 식으로 사용하는지 궁금해서요! 감사합니다..!
-
해결됨OpenGL 쉐이더 (5) shader 3D 그래픽스 - 3D 카메라 뷰잉, 프로젝션, MVP 변환 파이프라인
compute shader
openGL 4.3 버전부터 (4.2 버전일 수도 있습니다) compute shader 가 지원된다고 하는데혹시 compute shader 에 대해서도 따로 강의로 다뤄주실 계획 있으신가요?