[工作积累] shadowmap 改进】的更多相关文章

前面几篇阴影相关的: https://www.cnblogs.com/crazii/p/5443534.html 这个是在做bh3 MMD角色自阴影时的笔记 https://www.cnblogs.com/crazii/p/7227269.html 这个是blade的CSM笔记和相关思考 这次在项目里对unity又做了新的改进,  整体思路还是沿用第二篇的方式: 1.使用足够长/远的视锥(view/projection)剔除场景 (渲染shadow map总是要剔除的,所以先用足够远的视锥,保证…
1.基本问题和相关 Common Techniques to Improve Shadow Depth Maps: https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324(v=vs.85).aspx Cascaded Shadow Maps https://msdn.microsoft.com/en-us/library/windows/desktop/ee416307(v=vs.85).aspx Soft shadow…
所谓坑, 就是文档中没有标明的特别需要处理的细节, 工作中会被无故的卡住各种令人恼火的问题. 包括系统级的bug和没有文档化的限制. 继Android的各种坑后, 现在做Amazon平台, 遇到的坑很多, 这里记录一下备忘: 先汇总下Android Native下的各种问题, 当然有些限制有明确文档说明,不算坑,但是限制太多还是很不爽: android平台下的某些限制: android下的各种坑 (我的C/C++/汇编/计算机原理博客) OBB的各种bug: OBB的解决方案 arm gcc t…
先贴一段C++标准(ISO/IEC 14882:2003): 5.2.1 Subscripting: 1 A postfix expression followed by an expression in square brackets is a postfix expression. One of theexpressions shall have the type “pointer to T” and the other shall have enumeration or integral…
ISO/IEC 14882:2003: 9.6 Bit-fields [class.bit] A member-declarator of the form identifieropt : constant-expression specifies a bit-field; its length is set off from the bit-field name by a colon. The bit-field attribute is not part of the type of the…
对于用户没有定义dctor(包括其所有成员)的类来说, new CLASS[n] 可能会直接请求sizeof(CLASS)*n的空间. 而带有dctor的 类, 因为delete[]的时候要逐个调用析构函数, 要保证调用n次析构. C++标准没有指定如何具体处理这种情况. 而对于很多数编译器来说, 是在请求的内存前面, 保存对象的个数n(放在其头部). sizeof(int)  sizeof(CLASS)  ...       n Object[0] Object[1] Object[2] ..…
UE4 的渲染分为两个模式1.编辑器是同步绘制的 2.游戏里是FParallelCommandListSet并行派发的. mesh渲染也分两类,static mesh 使用TStaticMeshDrawList 来绘制, skinned mesh是用DrawingPolicyFactory::DrawDynamicMesh来画.这两类绘制不管是异步还是同步都会调用.具体可以参考DepthRendering.cpp 实际上,有在DX12/Vulkan/Metal 这些支持paralle commi…
由于semantic的使用,我们有理由相信 vertex shader的output 和 pixel shader的input是按照semantic来匹配的,而跟传入顺序无关.印象dx9时代是这样. 虽然习惯上使用共用的sruct (VS_OUTPUT)来保证senamtic修改的同步,便于维护,但这个不是必须的. 但是最近工作中,在UE4的dx11上写自定义shader,因为VS和PS分开两文件,所以干脆没有用struct,而是直接写到parameter 里,但是遇到一个诡异的问题:参数的值不…
Linux常用命令之envsubst https://blog.csdn.net/banche163/article/details/101369495 Linux中的EAGAIN含义 https://blog.csdn.net/memo_weiwei/article/details/7691226 Linux中的虚拟设备/dev/null./dev/zero./dev/random和/dev/urandom https://blog.csdn.net/sinat_26058371/articl…
Camera的raw data一般都是YUV420的格式,数据的特点是: YUV 4:2:0采样,每四个Y共用一组UV分量 YUV420格式: 先Y,后V,中间是U.其中的Y是w * h,U和V是w/2 * (h/2) 如果w = 4,h = 2,则: yyyy yyyy uu vv 内存则是:yyyyyyyyuuvv 需要占用的内存:w*h(Y占用内存大小) + w * h/4(U占用内存大小) + w * h/4(V占用内存大小)   = w*h * 3 / 2 所以YUV420 数据在内存…
/* * YYYY-MM-DD类型的字符串日期比较 * */ String.prototype.compareAsDate=function(dateStr){//prototype原型方法 var d1Arr=this.split('-');// this是引用调用此方法的String对象 var d2Arr=dateStr.split('-'); var date1=new Date(d1Arr[0],d1Arr[1],d1Arr[2]).getTime(); var date2=new D…
jboolean result = env->CallBooleanMethod(ShopDataAndroid.IAPBridge_Object, ShopDataAndroid.IAPBridge_getProductList); : -; // this is not gonna work http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html#wp9502 因为JNI_TRUE (1) 和JNI_FALSE (…
对于一个Java 类 class MyClass { ... public native boolean nativeMyFunc(long param); } 一般来说native对应的声明是这样: JNIEXPORT jboolean JNICALL Java_com_organisation_MyClass_nativeMyFunc(JNIEnv *env, jobject thiz, jlong param); 然后最近遇到个 class My_Class { ... public na…
1. libssl https://github.com/guardianproject/openssl-android 然后执行ndk-build 2.libcurl 源代码组织结构, 下面的makefile要依赖这个结构. 因为curl依赖openssl, 所以需要先编译openssl: src/openssl-android src/curl-android 下载curl的代码, 并放入src/curl-android/jni 下. 本来想用cygwin来运行configure, 生成an…
JNI: invoke java dialog with native callback: store native function address in java, and invoke native another method to this function. key points: 1.Store callback function pointer(address) in java: to support multiple calls, use data block for each…
protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.input); mInput = (EditText)findViewById(R.id.text_input); ... mInput.requestFocus(); mInput.postDelayed(new Runnable() { @Override…
https://developer.android.com/training/system-ui/navigation.html View decorView = getWindow().getDecorView(); // Hide both the navigation bar and the status bar. // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as // a ge…
https://developers.google.com/games/services/cpp/api/structgpg_1_1AndroidSupport For apps which target android 4.0+ (API Version greater than or equal to 14), most of these function calls are unnecessary. For such apps only the OnActivityResult funct…
Bionic libc doesn't load dependencies for current .so file (diff from Windows or Linux) so a explicit calling of Java's System.loadLibrary() is needed, in order to load depedency libraries. otherwise the original .so will fail to load. JNI_OnLoad wil…
Update Android SDK build tool to latest can solve my problem.…
https://www.khronos.org/opengles/sdk/docs/man3/html/glInvalidateFramebuffer.xhtml 这个在GLES2.0上只有Extension: https://www.khronos.org/registry/gles/extensions/EXT/EXT_discard_framebuffer.txt 原理跟D3D9 的Present参数(D3DSWAPEFFECT_DISCARD)类似: http://msdn.micros…
////////////////////////////////////////////////////////////////////////// //Java code snippet //get APK's versionCode in AndroidManifest.xml public int getVersionCode() { int versionCode = 1; try{ PackageInfo packageInfo = this.getPackageManager().g…
因为TAA要使用上一帧的历史结果,那么在相机移动的时候,颜色就会有残留,出现ghosting(残影). 由于上一帧历史是累积的,是由上一帧的直接渲染结果和上上帧的结果做了合并,所以ghosting并不是一帧就消失,要累积一段时间才会消失. 处理ghosting有很多方法,比如depth based rejection和velocity weighing,  现在最流行的方法,大概也是最好的方式是用neighbor AABB clip. 1.首先取当前帧,当前像素周围的几个颜色,比如4个颜色,得到…
先贴一个UE4 TAA的slidehttps://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf 里面细节问题很多,先记录一下目前想到和遇到的问题,便于备忘,后面有空的话再记录. TAA用到的Velocity和抖动对精度要求比较高, 特别是大场景下误差容易比较大,UE4做了一系列的处理来保持精度. 投影矩阵的精度 static const FMatrix InvertProjectionMatr…
最近在用UE4的Instancing, 发现限制很多. Unity有instancing的attribute array (uniform/constant buffer),通过InstanceID来访问每个instance的数据,实现每个实例的不同的参数(通常的一种做法). 然而Unreal没有这样的功能,只有一些instancing的vertex buffer. shader: #if USE_INSTANCING && !USE_INSTANCING_EMULATED float4…
忙了大半年, 终于出来了. iOS: https://itunes.apple.com/us/app/nba-2k16/id984732818?mt=8 Android: https://play.google.com/store/apps/details?id=com.t2ksports.nba2k16android 我主要负责安卓的东西, 帮忙修复了iOS64位的一些bug. 去年安卓版本,只发了amazon商店, 今年改google play了. 目前声音仍然是最大问题, OpenSLES…
注意添加APP_ID <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_ve…
目 录1. 服务器虚拟化的相关配置建议 11.1. 服务器的基本配置建议 11.1.1. CPU配置 11.1.2. 服务器内存配置 21.1.3. 物理网卡配置 21.1.4. 服务器磁盘配置 21.1.5. vSAN服务器磁盘配置 31.1.6. 服务器配置参考 31.2. 集群配置规划 41.2.1. 管理类集群 41.2.2. 业务类集群 41.2.3. 边界类集群 51.2.4. vSAN集群 51.3. 存储配置规划 51.4. 机柜配置规划 51.4.1. 高密度机柜 61.4.2…
之前在工作总汇总了shadowmap的各种问题 [工作积累] shadow map问题汇总 最近有点时间再仔细研究了shadowmap的一些算法.主要修复了LiSPSM(上面链接里后面有更新),实现了TSM和CSM阴影. 总的来说,CSM只是结构上的不同,多了拆分和几个pass,实现起来相对比较简单.比较花时间的是LiSPSM和TSM的调试.至于为什么要研究LiSPSM和TSM,主要是在不能使用CSM的时候(比如低配,mobile之类),可以有更好的效果.另外,CSM和LiSPSM.TSM并不冲…
最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过程模版继承– 过程模版安全性配置 很多人都知道,在vsts在线版上一直缺少工作项定制能力,这次的更新一定让很多人兴奋,但是我们的工作还没有完,后续我们会逐步完成字段下拉菜单,工作流配置,html字段,添加全新的工作项类型等功能.关于本功能的具体内容,请参考以下博客 http://devopshub.…