높이 맵의 2 차원 타일 기반지도와 이미지가 있습니다.이 맵을 사용하면지도 모양이 덜 평평 해집니다. 그러나 나는 SFML에서 사용되는 GLSL을 처음 사용합니다. 나는 GLSL 쉐이더를 찾고 있는데, 타일 텍스쳐와 높이 맵의 일부분을 동일한 좌표 또는 뭔가 높이 환상을 만들기 위해 전달할 수 있습니다. 하지만 저는 혼자서 모든 것을하고 있습니다. GLSL을 배울 시간이 없으니, 답장을 보내 주셔서 감사합니다. (누군가가 셰이더 코드를 게시하고 인형에 대해 설명 할 수 있다면 어떨까요? .cpp 파일에서 사용됨)높이 맵 렌더링을 사용하는 2D 지형으로의 GLSL 코드
답변
아마도 "Parallax Occlusion Mapping" 기술에 관심이있을 것입니다. 좋은 구현은 here입니다.
감사합니다. 좋은 예입니다. 일부 GLSL 자습서를 읽었지만 그 쉐이더에 무엇을 전달해야하는지 아직 이해하지 못합니다. GLSL 코드에 정의 된 모든 유창 변수를 초기화해야합니까? – Reiv
다음 변수를 설정해야합니다. uniform mat4 matView; 균일 한 mat3 matViewProjection; uniform float fHeightScale; 균일 한 float fPerspectiveBias; uniform vec4 vLightOffset; – Constantinius
2D 타일 기반 렌더링에서는 시차 오 클루 젼 매핑이 실제로 많이 사용되지 않는다는 점에 유의해야합니다. 2D 타일 기반은 "하향식"뷰를 의미하며,이 경우 시차는 0입니다. 비록 POM과 함께 자주 계산되는 자기 폐색 용어를 사용할 수도 있지만. 이것은 약간의 인상을 줄 것입니다. – Damon
높이 맵의 환상을주기 위해 화면에서 Z를 걷어 찰 것입니다. 실제로 형상을 변경하지는 않습니다. 이것은 위에서 아래로 내려가보기에는 유용하지 않습니다 .. Id는 새로운 Z와 빛의 방향에 따라 어떤 종류의 그림자 효과를 추가하려고합니다.
다음 줄 : pos.z + = color.x + color.y + color.z;은 Z를 푸시하는 요소입니다. 스케일에 양수 또는 음수를 지정할 수 있습니다.
/* Vertex Program
* Shifts Z by Textures color
*/
uniform sampler2D color_texture;
uniform float scale;
varying vec4 p_color;
void main()
{
vec2 texcoords = gl_MultiTexCoord0.st;
p_color = texture2D(color_texture,texcoords);
vec4 color = texture2D(color_texture,texcoords);
vec4 pos = gl_Vertex;
pos.z += color.x + color.y + color.z;
pos.z*=scale;
gl_Position = gl_ModelViewProjectionMatrix * pos;
}
그리고 여기에 아주 간단한 조각 프로그램입니다 ..
/* Fragment Program
Copies incoming fragment color without change.
*/
varying vec4 p_color;
void main()
{
gl_FragColor = p_color;
}
이 빛이 세계 공간에 사상 버블/돔 모양의베이스와 지형 메쉬를 변형. 지형이 더 많이 모자이크 될수록 결과가 좋습니다. 누군가가 다소 모호한 설명을 기반으로 쉐이더 바인딩을 포함, 당신을 위해 모든 코드를 작성하는 것 같지는 이후
Const Float PI = 3.1415928;
vec3 vVertex = vec3(gl_Vertex);
float d = distance(lightPos , gl_Vertex);
float d2;
if (d < 1500.0)
{
d2 = d/1500.0;
d = cos(PI*2.0*d2);
}
else
{
d=0.0;
d2=0.0;
}
vVertex.y += (d*75.0)*(1.0-d2)-50.;
gl_Position = gl_ModelViewProjectionMatrix* vec4(vVertex,gl_Vertex.w);
- 1. 2D 타일 맵 생성
- 2. 메모리에서 XNA 높이 맵
- 3. 구글 맵 infowindow 높이 문제
- 4. GLSL?
- 5. NPR GLSL 자습서
- 6. 드로잉 2D 스프라이트 (비트 맵) 효율적으로 타일링하기
- 7. 게임에서 2D 맵 렌더링 - 자르기 및 스크롤
- 8. NSMutableArray를 사용하는 2D 배열
- 9. 비표준 투영 행렬을 사용하는 GLSL 법선
- 10. 페이지 렌더링을 중단하지 않는 자바 스크립트 코드
- 11. iPhone에서 OpenGL을 사용하는 변위 맵
- 12. 렌더링을 위해 OnLoaded를 사용하는 UserControl 인쇄
- 13. Normals 렌더링을 사용하는 OpenGL ES 다각형
- 14. 내 2D 배열 코드 표시
- 15. 어떻게 GLSL
- 16. 타일 맵 용 VBO (그리기 순서 및 비스듬한 공중 2D)
- 17. CUDA에서 2D 어레이를 사용하는 방법?
- 18. RenderMonkey - GLSL light
- 19. OpenGL 투명 스카이 박스와 블렌딩 문제 + 투명한 높이 맵
- 20. GLSL break 명령어
- 21. GLSL 셰이더 법선 생성
- 22. 자바 코드, 빠른 검토 (스윙, 그래픽 2D)
- 23. ORPG 엔진 개발, 코드 구조화 (C++, 2D)
- 24. app 엔진 데이터 저장소 : 지속적으로 업데이트되는 지형 높이 맵
- 25. PortalSiteMapProvider를 사용하는 단위 테스트 코드
- 26. GLSL modelmapmatrix 및 viewmatrix
- 27. GLSL - 설정 속성 확인
- 28. GLSL 오브젝트 백열
- 29. GLSL lowp : 구문 오류
- 30. OpenGL GLSL interpolation
은, 지금까지 당신을 얻을 가능성이 없습니다 "나는이 단지에 대한 GLSL을 배울 수있는 시간을 가지고 있겠지." 그러나, 당신에게 몇 가지 아이디어를 제공합니다 : 더 높은 지상 라이터를 음영 처리하면 AO 근사값이 저렴해질 수 있습니다. dFdx/dFdy를 사용하면 지형의 법선이 어디에 있는지 추정 할 수 있습니다. 태양에 대한 빛의 벡터를 정착하고 내적을 취하십시오. 그것은 "태양"을 향한 언덕 쪽을 더욱 밝게 만들어주고 깊이있는 환상을줍니다. – Damon
코드를 입력하십시오. – pmr