홈>
벡터/프래그먼트 셰이더로 작업하는 방법을 오해하고있는 것 같습니다. 내 벡터 셰이더는 다음과 같습니다.
uniform mat4 uVMatrix; // view (camera transformations)
uniform mat4 uMMatrix; // model (object transformations)
uniform mat4 uPMatrix; // projection
attribute vec4 aVertexPosition; // passed in
attribute vec4 aVertexColor;
varying vec4 vColor;
void main() {
gl_Position = uPMatrix * uVMatrix * uMMatrix * aVertexPosition;
vColor = aVertexColor; // pass the vertex's color to the fragment shader
}
아주 간단합니다. 지금은 3D 공간에서 변형하고 그리는 간단한 사각형이 있습니다. 다음과 같이 suqare의 중앙에있는 원을 통해보고 싶습니다.
이 정사각형에는 벡터 셰이더에서 변환하는 4 개의 정점이 있습니다. 다음은 조각 쉐이더입니다.
precision mediump float; // how precise to be with floats
varying vec4 vColor; // interpolated from the vertices
void main() {
gl_FragColor = vColor;
}
이제 gl_FragCoord에 액세스 할 수있는 것을 보았지만 그 좌표는 모든 벡터 변환 이후입니다. 모든 투영 변환 등 전에 사각형의 픽셀을 어떻게 조작 할 수 있습니까? 4 개의 벡터 만 있기 때문에 벡터 쉐이더에서 할 수 있다고 생각하지 않습니다 ...
-
답변 # 1
관련 자료
- opengl - GLSL 조각 셰이더 마스크를 정점 좌표에 맞추기
- java - countdowntimer가 완료되기 전에 조각을 변경하면 응용 프로그램이 Android에서 충돌합니다
- c++ - 조각 셰이더의 GLSL 번역이 예상대로 작동하지 않습니다
- c# - Fragment Shader에서 2D Gaussian 필터 계산
- c++ - 프래그먼트 셰이더는 안되지만 서로 위에면을 그립니다
- android - 활동을 파괴하기 전에 조각으로 데이터 전달
- opengl - 프래그먼트 셰이더는 보이는 프래그먼트에 대해서만 실행됩니까?
- glsl - OpenGL에서 행렬 유형을 조각 셰이더 출력으로 사용
- python - 프래그먼트 셰이더에서 3D 배열에 액세스
- multithreading - 벡터 C ++에서 벡터 스레드 안전 연산을 읽고 쓰는가?
- unity3d - 정점 입력 만 수신하는 경우 모든 픽셀에 대해 프래그먼트 셰이더를 어떻게 실행할 수 있습니까?
- opengl - 프래그먼트 셰이더에서 노이즈를 사용하여 움직이는 이미지에서 안정적인 선 가장자리 만들기
- c++ - OpenGL, GLSL 프래그먼트 셰이더가 Sampler2D 텍스처를 읽을 수 없습니다
- c++ - 프래그먼트 셰이더에서 텍스처 정의 상실
관련 질문
이를 달성하는 간단한 방법은 쿼드 메쉬에 UV를 할당 한 다음 프래그먼트 셰이더에서 UV를 활용하여 다음과 같은 작업을 수행하여 원을 그릴 수 있습니다 (의사 코드).
UV에 다각형이 보간되기 때문에 작동합니다.