머냐; 이거 https://www.youtube.com/watch?v=KckRq7Rm3Mw 동영상에서는 meshlet 생성에 사용한 대강의 cluster 로 사용해도 어느정도 된다고 이야기함 우선 아래 2개를 추천하던데 http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf 위에거의 게시판 https://forum.beyond3d.com/threads/gpu-driven-rendering-siggraph-2015-follow-up.57240/ 모르것다. https://frostbite-wp-prd.s3.amazonaws.com/wp-content/uploads/2016/03/2..
코드 통합도 있겠고, 여러 목적이 있지만 가장 먼저 찾은건, Ray-MMD의 Ray의 Ray 프로젝트 대략적 중간 언어 > GLSL > GLSL Optimizer (github) 문제는 optimizer가 compute 처리가 안됨; 어짜피 OSX가 CS 지원을 안해서, 골치 아픔; 윈도우는 다 지원, OSX는 open GL 도 쥐꼬리만큼 요즘 나온 툴체인 소개 https://github.com/KhronosGroup/glslang/issues/1417 XShaderCompiler http://shader-playground.timjones.io/e3992560499e60815aa0fb68a1d42c30 v0.10-alpha 이지만 쓸만한 결과를 준다 struct PSInput { float4 color..
DirectX 9 에서는 내장 DirectX 11 log / exp 를 사용하여 구현했다고 알려져있다 (OpenGL 도 마찬가지) http://blog.techlab-xe.net/archives/5550 https://www.opengl.org/discussion_boards/showthread.php/182833-pow%28x-2%29-different-then-x%2Ax 보통 경우에서 가장 큰 차이는 전에는 x 부분이 음수면 0이었는데 Nan 으로 바뀌었다는거 https://www.opengl.org/discussion_boards/showthread.php/182833-pow%28x-2%29-different-then-x%2Ax Fx 기반 MMD 에선, float3 lambda = float3(68..
바로 'http://www.alexandre-pestana.com/volumetric-lights/' 이거 보다가 GG Ray marching은 대충은 알고 있는데 어케 써란 건지 Michal 04는 GPU5에 내용을 써놨다는데; 이건 최적화 기법 위주로 써놓음 우선, 한글로 간단한 설명은 아래에 존재 https://m.blog.naver.com/sorkelf/40152690614 Scattering 및 phase function에 대한 건 physically based rendering의 'Volume scattering' 에 존재 위에건 레일리 산란만 존재 다른 건 레일리 산란과 미 산란 (https://m.blog.naver.com/sorkelf/40151907696) ..
추가로 찾은 소스와 ray의 구현체에서 배울게 많다 TextureArray mipmap 방식은 2048, 1024로 level이 떨어질 때 마다 크기가 줄어든다 작게는 아래와 같지만, 좀 복잡한 이미지를 비스듬하게 볼경우 각진 형태가 많이 보인다 그냥 512x512로 array 형태로 저장하면 각진 형상은 줄어든다 Texture mipmap과는 (blur는) 차이가 존재한다 당연히 mipmap은 멀리 봤을 때 원본을 흉내내는거라 Level 6의 경우 특히, // distance to texture plane // in shader: LOD = log(powf(2.0f, Nlevels - 1.0f) * dist) / log(3) const float dist = powf(3.0f, level) / powf..
Filtering 되지 않은 texture 사용법 clipless IntegrateEdge texturing 에 대한 설명이 추가 되어있다 IntegrateEdge 가장 간단한 라인 integral form은 아래와 같다 float cosTheta = dot(v1, v2); float theta = acos(cosTheta); float res = normalize(cross(v1, v2)).z * theta; v3.0 적용 전의 4 paramter minV를 적용했을 때의 결과는 mat3 Minv = mat3( vec3(1, 0, t.y), vec3(0, t.z, 0), vec3(t.w, 0, t.x) ); 거의 비슷하다 하지만, angle이 커지고 roughness가 커지면 아래와 같은 문제 발생 N..
생각 보다 배울게 많은 소스이다 mat3 t2w = BasisFrisvad(s.n); mat3 w2t = transpose(t2w); 저기서 FrisVad는 아래서 나왔다 "Building an Orthonormal Basis from a 3D Unit Vector Without Normalization" Finding an orthonormal basis from a unit 3D vector. abstract 내용에 따르면 fewer arithmetic operations http://orbit.dtu.dk/fedora/objects/orbit:113874/datastreams/file_10189336/content 소스 gist는 아래에 https://gist.github.com/XProger/b3..
열심히 Web version을 포팅했다 그런데 정상적인 형태가 나오지 않는다 Specular 쪽 intensity가 너무 강하게 나온다 해당 문제로 인해 코드를 일일히 비교해봤지만 원인을 알기 힘들었다 LTC mat/mag texture도 바꿔보고 답은 Tone mapping 이었다 GPU Gen의 Mat/Mag을 사용하였는디 이 경우는 M00 이 1 인 형태다 색 분포가 cpp 예제인 ltc_demo / ltc_mat.dds와 아예 다른데 이유가 먼지 아래가 ltc_mat.dds의 sample 이다 뒤집는다 하면 결국 오른쪽 녹색의 차이가 문제임 흠, Web 버전에 힌트가 있음 둘다 fit 코드로 부터 나온거고 그걸 optimize하면서 다른 걸로 바꾼 것 최신 버전으로 바꿔보자
None linear fuction에 대해 간단히 선택할 수 있다고 한다 도함수가 있다면 BFGS algorithm을 써라고 한다 소스에서는 아래 방법을 사용 // initialise simplex mov(s[0], start, DIM); for (int i = 1; i < NB_POINTS; i++) { mov(s[i], start, DIM); s[i][i - 1] += delta; } 도대체 먼가 했는데, https://stackoverflow.com/questions/17928010/choosing-the-initial-simplex-in-the-nelder-mead-optimization-algorithm 비슷하게 matlab에서도 쓰인다고 한다 x0=xin and the remaining n v..
가장 간단하게는 shader bind 후 호출하는 방식 복잡하게는 한도 끝도 없지만, 렌더링시에 메모리에 써버리는 방식의 경우 MiniEngine 에서 봤다 MiniEngine DirectX 12 기반은 저걸 써야 하고, DirectX 11은 11.1에서 추가된 방식을 쓰면되던데 Vulkan도 비슷할듯하다 반면, Shader query를 기반으로 자료형 다 조사해서 uniform이나 cbuffer 구조를 만들어두고 변경시 update하는 방식이 있다. Direct 11 기반은 ForwardPlus, 히에로그라프가 있는데 shader query는 컴퓨터에서 밖에 사용 못한다. OpenGL은 Ray 가 비슷한 방식을 사용한다. Ray 아래와 같이 할당하면, effect->getParameter("qualit..
- Total
- Today
- Yesterday