shader

Unity Shader之几何着色器(Geometry Shader)实现面片飞散的爆炸效果

我是研究僧i 提交于 2020-01-11 23:30:56
前言 上篇文章初学集合着色器实现了草地效果,这篇再次使用GS实现一个“爆炸效果”。为什么要加上引号呢,因为实现的其实不是一个传统的爆炸效果,更类似于面片向外扩散消失的一种科幻效果,其实通过修改面片大小,颜色和扩散方向,还可以模拟复仇者联盟三最后人化为灰烬的效果。 为什么要实现这个效果呢,实际上我最早知道几何着色器是下载了一个K神实现的开源demo,然后看到了一个非常酷炫的传送特效。 当时我第一感受就是“这尼玛也太太太太帅了吧!!!我什么时候也可以写出这种特效??!!” 感谢这是个开源Demo我可以看到其中的源码,我把下载地址提供给大家 点我点我 。这个网站还有很多同样酷炫的demo可供学习。这个特效其实使用的就是GS,然后通过调整面片的大小方向等来将物体“打碎”成粒子,再将粒子“重组”成物体。其实仔细观察“打碎”这个过程,有一部分图元用来表现传送了,还有一些细小的图元好像是粉末一样向外挥发掉了,我这次实现的就是后者这个效果,传送效果我以后会补上的。 实现 我其实参考大佬代码实现的Demo不是很复杂,直接放上代码吧。 Shader "MyShader/Explosion" { Properties { _Color ( "Color Tint" , Color ) = ( 1 , 1 , 1 , 1 ) _Emission1 ( "Emission1" , Color ) = ( 1

Can't draw triangle using Opengl

前提是你 提交于 2020-01-11 14:21:10
问题 in this code i want to draw a simple triangle on a blue background using openGL however when i compile and run the code only a window with the blue background appears (without the white triangle that is supposed to be drawn), iam using Xcode my code #include <iostream> #include <string> #include <GLUT/glut.h> #include <OpenGL/gl3.h> #include <fstream> using namespace std; // VAO & VBO objects GLuint VBO; GLuint VAO; void display(); // vertex Data (position) float vertex[] = {-1.0, 0.0 , 1.0,

OpenGL Shader Version Compile Error

a 夏天 提交于 2020-01-11 09:18:05
问题 I have a problem when compiling a simple vertex shader in OpenGL, I get the following error messages: error(#106) Version number not supported by GL2 error(#279) Invalid layout qualifier 'location' I assume that I must be using the wrong version of GL2, but I have no idea how to find my version number or where to go for an upgrade (and yes I tried to search for an answer.) Attached is a copy of my shader code just for reference and my openGL information. #version 330 core layout(location = 0)

CryEngine5 Shader调试

假如想象 提交于 2020-01-11 06:37:31
CryEngine5 的调试与上一篇 CryEngine3 基本一致,所以实际测试发现还是有些不一样,需要注意的是: 1. Shader Cache 目录默认为: C:\Users\Administrator\Saved Games\gamezero\shaders\cache\d3d11 2. 配置本地编译服务器总是提示Shader 编译失败,关闭编译服务器,则可以正常编译(没搞明白) 3. r_shadersdebug = 4 【 ref 】 Enable special logging when shaders become compiled Usage: r_ShadersDebug [0/1/2/3/4] 1 = assembly into directory Main/{Game}/shaders/cache/d3d9 2 = compiler input into directory Main/{Game}/testcg 3 = compiler input with debug information (useful for PIX etc./{Game}/testcg_1pass 4 = compiler input with debug information, but optimized shaders Default is 0 (off) 4. 第一次配置

How does alpha blending work, mathematically, pixel-by-pixel?

流过昼夜 提交于 2020-01-10 05:54:48
问题 Seems like it's not as simple as RGB1*A1 + RGB2*A2...how are values clipped? Weighted? Etc. And is this a context-dependent question? Are there different algorithms, that produce different results? Or one standard implementation? I'm particularly interested in OpenGL-specific answers, but context from other environments is useful too. 回答1: I don't know about OpenGL, but one pixel of opacity A is usually drawn on another pixel like so: result.r = background.r * (1 - A) + foreground.r * A

作用让UI在指定矩形范围显示 超过范围透明

人走茶凉 提交于 2020-01-10 00:49:32
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) Shader "UI/Default-ClipRect" { Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) _StencilComp ("Stencil Comparison", Float) = 8 _Stencil ("Stencil ID", Float) = 0 _StencilOp ("Stencil Operation", Float) = 0 _StencilWriteMask ("Stencil Write Mask", Float) = 255 _StencilReadMask ("Stencil Read Mask", Float) = 255 _ColorMask ("Color Mask", Float) = 15 [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 /

Shader的函数公式以及使用的场景

…衆ロ難τιáo~ 提交于 2020-01-09 12:16:14
Shader 是干什么的? 它的作用可以先简单理解为对屏幕上的物体,进行颜色处理。 而大家都知道,所有计算机,处理颜色的当然是显卡,也就是 GPU 。 所以我们写 Shader 的目的就是告诉 GPU ,我需要对物体的颜色,纹理,等方面,怎样处理,达到我们想要的效果。 UnityCG.cginc中一些常用的函数 //摄像机方向(视角方向) float3 WorldSpaceViewDir(float4 v) 根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向 float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标==》世界空间从这个点到摄像机的观察方向 float3 ObjSpaceViewDir(float4 v) 模型空间中的顶点坐标==》模型空间从这个点到摄像机的观察方向 //光源方向 float3 WorldSpaceLightDir(float4 v) 模型空间中的顶点坐标==》世界空间中从这个点到光源的方向 float3 UnityWorldSpaceLightDir(float4 v) 世界空间中的顶点坐标==》世界空间中从这个点到光源的方向 float3 ObjSpaceLightDir(float4 v) 模型空间中的顶点坐标==》模型空间中从这个点到光源的方向 //方向转换 float3

从0开发3D引擎(四):搭建测试环境

有些话、适合烂在心里 提交于 2020-01-09 09:10:32
目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测试 测试时间开销 测试内存开销 搭建本地测试环境 大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境。 上一篇博文 从0开发3D引擎(三):搭建开发环境 了解自动化测试 对于引擎开发这种复杂、长期的项目,为了减少bug,提升长期的开发效率,自动化测试必不可少。在我们的 Wonder.js 引擎中,包括了本节介绍的3种自动化测试,测试覆盖率达到了95%。 本系列为了节省篇幅,不进行自动化测试。因此本节只进行简单的介绍,不给出实际的案例,读者可以到 Wonder.js->test/ 目录下查看自动化测试实例。 单元测试 我们需要写测试用例对单个函数进行单元测试。 搭建环境 使用 jest 作为测试框架, sinon 进行stub。 如果读者想了解stub的概念,可以参考 我对Stub和Mock的理解 因为不能直接使用js库,需要写对应的 FFI (类似于typescript的d.ts文件)才能在Reason中被调用,所以我们可以使用 bs-jest 和Wonder的 Wonder-bs-sinon 作为FFI 集成测试 相对于单元测试,集成测试的测试目标变为某个特性

[Unity] Shader Graph Error 当前渲染管道与此主节点不兼容(The current render pipeline is not compatible with this master node)

旧街凉风 提交于 2020-01-07 18:39:45
Shader Graph Error : The current render pipeline is not compatible with this master node 问题产生环境: Unity 2019.2.15f1 HDRP 6.9.2 报错和截图如上, 说是 当前渲染管道与此主节点不兼容, 解决方法: 1: 在 Assets 资源管理器中新建一个文件夹, 例如上图中我是在 _Shaders 文件夹下新建了一个名为 HDRP 的文件夹 2: 选中刚刚新建的文件夹, 点击鼠标右键创建 HDRP 管道资源 右键 --> Create --> Rendering --> High Definition Render Pipeline Asset 就可以得到 HDRP 渲染管道资源 HDRenderPipelineAsset 3: 将渲染管道资源放到项目管理的 Scriptable Render Pipeline Settings 中 Edit --> Project Settings --> Graphics --> 拖动 HDRenderPipelineAsset --> Scriptable Render Pipeline Settings 这样一来, 问题就解决了 报错信息消失, 问题成功解决 来源: https://www.cnblogs.com

Lesson5 Shader加载二维贴纸

别说谁变了你拦得住时间么 提交于 2020-01-07 18:31:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> // HelloShader // Created by gdxz on 16/10/28. #import "LearnView.h" #import <OpenGLES/ES2/gl.h> @interface LearnView() @property (nonatomic, strong) EAGLContext *myContext; @property (nonatomic, strong) CAEAGLLayer *myEagLayer; @property (nonatomic, assign) GLuint myProgram; @property (nonatomic, assign) GLuint myColorRenderBuffer; @property (nonatomic, assign) GLuint myColorFrameBuffer; - (void)setupLayer; @end @implementation LearnView + (Class)layerClass { return [CAEAGLLayer class]; } - (void)layoutSubviews { [self setupLayer]; [self setupContext];