这篇文章讲述的是项目中二次元日式卡通着色渲染用到的一些跟着色相关的技术点。一、卡通着色何谓卡通着色?大概是让角色看起来卡通的角色吧。这里说的卡通着色,实际上指的是色阶着色。即根据光照和法线计算出当前像素处于哪个色阶,色阶之间有平缓过渡。1.1 三色阶如下图所示, 这是一个三阶色的着色结果。可以看到着色结果是明显的三阶,从正对光照到背对光照是过渡分明的白色、灰色、黑色的三色阶。卡通渲染着色最基础的部
卡通渲染的主要原理包含两个方面:1.轮廓线的描边效果2.模型漫反射离散和纯色高光区域的模拟 描边:描边的实现方法采用将模型的轮廓线顶点向法线(或顶点)的方向扩展一定的像素得到。也可通过边缘检测(基于法线和深度)来实现。 漫反射离散: 利用离散的Ramp纹理对漫反射光照效果进行采样,可以实现不同效果梯度的卡通渲染效果,例如: 注意此纹理的灰度变化并非均匀变化,
title: unity-NPR-卡通渲染 categories: Unity3d tags: [unity, shader, npr, ta] date: 2019-03-07 11:44:18 comments: falseNPR : Non Photorealistic Rendering, 非真实的渲染, 卡通渲染 是里面的一个范畴前篇对应的git : https://github.com
写在前面时隔两个月我终于来更新博客了,之前一直在学东西,做一些项目,感觉没什么可以分享的就一直没写。本来之前打算写云彩渲染或是Compute Shader的,觉得时间比较长所以打算先写个简单的。今天扫项目的时候看到了很早之前下载的Unity Chan的项目,其实很早之前就想要分析下...
原创 2022-01-06 18:15:02
1475阅读
写在前面本系列其它文章:卡通风格的Shader(一)好久没写博客了,一定是由于课程作业比較多,一定不是由于我懒,恩恩。三个月曾经。在一篇讲卡通风格的Shader的最后。我们说到在Surface Shader中实现描边效果的弊端。也就是仅仅对表面平缓的模型有效。这是由于我们是依赖法线和视角的点乘结果来
转载 2017-07-24 09:17:00
140阅读
写在前面本系列其它文章:卡通风格的Shader(二)呜。事实上非常早就看到了这类Shader,实现方法非常多,效果也有些许不一样。从这篇開始,陆续学习一下接触到的卡通类型Shader的编写。本篇的最后效果例如以下(仅仅有怪物和苹果部分):本篇文章里指的卡通效果具有例如以下特点:简化了模型中使用的颜色
转载 2017-07-13 19:31:00
174阅读
写在前面本系列其他文章:卡通风格的Shader(二)呜,其实很早就看到了这类Shader,实现方法很多,效果也有些许不一样。从这篇开始,陆续学习一下接触到的卡通类型Shader的编写。本篇的最后效果如下(只有怪物和苹果部分):本篇文章里指的卡通效果具有如下特点:简化了模型中使用的颜色 简化光照,使...
原创 2022-01-07 10:21:19
1054阅读
写在前面本系列其他文章:卡通风格的Shader(一)好久没写博客了,一定是因为课程作业比较多,一定不是因为我懒,恩恩。三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效。这是因为我们是依赖法线和视角的点乘结果来...
原创 2022-01-07 10:01:07
358阅读
使用alpha混合,实现被遮挡时物体描边透视。shader代码:Shader "SharedShader/CartoonOccluTransparent"{ Properties { _Color("Main Color", Color) = (1,1,1,1) _MainTex ("Texture", 2D) = "white" {} _OutlineWidth("Outlin...
原创 2021-11-18 16:45:09
1083阅读
按照惯例,先上图: 效果分析整体上效果在模型外包围,且永远在模型后面边缘噪波两层描边思路分析效果上描边与模型渲染相对分离,且要控制附魔效果的出现与消失,初步思路使用双Pass对卡通模型和附魔效果分别渲染。之前的卡通渲染shader可以直接使用UsePass进行复用由于之前使用的ToonLit shader是表面着色器,如下图,我保留了前向渲染(forward)与延迟渲染(de
我们可以看到,这个卡通渲染有三个颜色,并且调子与半兰伯特类似,所以我们只需要创建一张有三种颜色的纹理,使用半兰伯特返回的结果作为UV的U值进行RampTex的取值,并把得到的颜色赋值到模型上,最后再加上一个描边即可。RampTex制作方法Shader Forge版代码版Shader "Unlit/CartoonCode" { Properties { _RampTex ("
种种原因鸽了很久…已经学到第九章了第六章的笔记还没写…那就当对初级篇的一个总结吧,防止篇幅太长,分3部分来总结~对于光照模型的讲解原书已经讲得非常详细了,这里就随便记一下咯…感觉这章对于萌新来说最重要的是从框架开始跟着敲,熟悉一下流程和常用函数、变量、语义没啥难度,但是基础很重要,这里熟悉了,后面代码感觉眼睛已经可以跳着看了emm总结开始! 标准光照模型在标准光照模型中,进入摄像机中的光
转载 2024-05-28 22:54:51
223阅读
转载自 冯乐乐 《Unity Shader 入门精要》一个顶点/片元 着色器的结构大概如下: 1. Shader "MyShaderName" 2. { 3. Properties 4. { 5. //属性 6. } 7. SubShader 8. { 9. //针对显卡A的SubShader
Unity Shader入门精要读书笔记系列第1章 欢迎来到Shader的世界第2章 渲染流水线第3章 Unity Shader基础第4章 学习Shader所需的数学基础第5章 开始 Unity Shader 学习之旅第6章 Unity中的基础光照第7章 基础纹理 文章目录Unity Shader入门精要读书笔记系列前言一、初识纹理1.单张纹理采样实践2.纹理的属性纹理格式(Texture Typ
转载 2024-04-08 08:53:53
109阅读
Unity Shader 基础unity shader在5.2版本以上能够直接从项目中创建4个shader模板:standard surface shader、Unlit shader、Image Effect shader,computer shader.standard shader:包含标准光照模型(使用了基于物理的渲染方法) Unlit shader:不含光照的基本的顶点/片元着色器
转载 2024-04-07 14:28:13
96阅读
Unity ShaderUnity为开发者提供的高级抽象渲染层,Unity希望通过这种方式让开发者更加轻松的控制渲染 如下图 Unity Shader都是使用ShaderLab来编写的,ShaderLab是Unity提供的编写Unity Shader的一种说明性语言。使用了一些嵌套在花括号内部的语义来描述一个Unity Shader文件的结构。这些结构包含了许多渲染所需要的数据,例如Proper
unityshader,分为两种模式:固定管线和可编程,其中可编程模式又分为两种:1.vertex shader和fragment shader组合。2.Surface shader。其实Surface shader是顶点和片段shader的混合体而已(只不过比第一种写起来方便)。shader无非就是处理顶点和光照数据 ,输出颜色信息,仅似而已。顶点着色器:产生纹理坐标,雾坐标,光照计
转载 2024-04-08 22:08:25
128阅读
文章目录Unity的渲染路径前向渲染内置光照变量内置光照函数延迟渲染Unity的光源类型计算光源的衰减Unity的阴影阴影实现原理Shadow Map屏幕空间的阴影映射总结不透明物体的阴影投射阴影接收阴影帧调试器查看阴影绘制过程 学习资料:《Unity Shader入门精要》第9章源代码:Github Unity的渲染路径设置渲染路径:Edit —— Project Settings —— Pl
What?? Shader,看起来好高级的样子,是的,这是Unity中高级进阶的必备。因此,兄弟我就在此记下我学习官网的一些心得。 一、概念篇 1.基准:unity里的shader并不是一门独特的语言,而是一种代码生成方式,且可将低层次且复杂的shader编程进行简化。但同时你也还是得使用Cg/HLSL来写的。 2.原理:写一个函数,以UVs或者一些数据为入口,然后以SurfaceO
一、数学内置函数1、Step(a,x):如果x<a返回0;如果x>或=a返回1 2、Clamp(x,a,b):如果x<a返回a;如果x>b返回b;如果在a和b之间就返回x 3、smoothstep(min,max,x):返回的值为–2*((x –min )/(max –min ))3 +3*((x –min )/(max –min ))2 4、lerp(a,b,f):线性插
转载 2024-05-27 20:24:56
236阅读
  • 1
  • 2
  • 3
  • 4
  • 5