首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏花落的技术专栏

    diffuse color控制颜色

    解锁进入内部,内部复制置换,restex读取贴图,记得要勾上rgba,displace将贴图信息转换为置换信息,也可以控制置换强度的大小。

    99520编辑于 2021-11-26
  • 来自专栏若尘的技术专栏

    diffuse color控制颜色

    解锁进入内部,内部复制置换,restex读取贴图,记得要勾上rgba,displace将贴图信息转换为置换信息,也可以控制置换强度的大小。

    1.4K85编辑于 2021-12-06
  • 来自专栏音视频技术学习笔记

    11.opengl光照-常见的三种光照实现

    struct Light { // vec3 position; // 使用定向光就不再需要了 vec3 direction; vec3 ambient; vec3 diffuse , TexCoords).rgb; // diffuse vec3 norm = normalize(Normal); float diff = max(dot(norm, lightDir), 0.0); vec3 diffuse = light.diffuse * diff * texture(material.diffuse - FragPos); float diff = max(dot(norm, lightDir), 0.0); vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb; // specular vec3 viewDir = normalize(viewPos -

    2.5K20发布于 2020-06-19
  • 来自专栏Unity游戏开发

    Shader-基础光照-高光反射光照模型

    Specular.png 逐定点光照 1.声明三个属性,_Specular控制高光反射材质,_Diffuse漫反射材质,_Gloss控制高光区域大小 Properties { _ Diffuse("Diffuse",Color) = (1,1,1,1) _Specular("Specular",Color) = (1,1,1,1) _Gloss(" #pragma fragment frag #include "Lighting.cginc" fixed4 _Diffuse float4 pos : SV_POSITION; float3 color : COLOR; }; 4.顶点着色器:包含了ambient环境光,diffuse = _LightColor0.rgb*_Diffuse.rgb*saturate(dot(worldNormal, worldLightDir)); fixed3 reflectDir

    1.2K30发布于 2019-05-28
  • 来自专栏每日一篇技术文章

    SceneKit-BlendMode混合模式

    diffuse.contents = UIColor(colorLiteralRed: 1, green: 0, blue: 0, alpha: 0.5) srcNode.geometry?. diffuse.contents = UIColor(colorLiteralRed: 0, green: 1, blue: 0, alpha: 1) alpha模式效果图如下 ? diffuse.contents = UIColor(colorLiteralRed: 1, green: 0, blue: 0, alpha: 1) srcNode.geometry?. diffuse.contents = UIColor(colorLiteralRed: 0, green: 1, blue: 1, alpha: 1) ? diffuse.contents = UIColor(colorLiteralRed: 0, green: 1, blue: 0, alpha: 1) 效果图为 ?

    1K30发布于 2019-06-15
  • 来自专栏Unity游戏开发

    Shader-基础光照-漫反射光照模型

    漫反射(diffuse) 当光线从光源照射到模型表面,该表面回向每个方向散射多少辐射量 漫反射符合兰伯特定律:反射光线的强度与表面法线与光源方向之间的夹角的余弦值成正比. 漫反射的计算: ? Diffuse.png n表面法线和l指向光源的向量的单位向量点乘来表示余弦值,用max防止点乘结果为负数,防止物体被从后面来的光源照亮. 漫反射的逐顶点光照的实现: Properties{ _Diffuse("Diffuse",Color) = (1,1,1,1) } 在Properties中声明一个color用来得到材质的漫反射材质 = _LightColor0 * _Diffuse.rgb * saturate(dot(worldLight,worldNormal)); o.color = diffuse + ambient; return o; } 1.基本任务将模型顶点从模型空间转换到裁剪空间. 2.通过Unity

    1.2K20发布于 2019-05-28
  • 光照模型:Phone模型

    2) Phong 三项:环境光 + 漫反射 + 镜面反射Phong 模型把最终颜色/亮度写成: I = I_ambient + I_diffuse + I_specular(1) 环境光 Ambient (不考虑方向,给整体一个底色)I_ambient = Ka * IaKa:材质环境系数(可用颜色 vec3)Ia:环境光强/环境光颜色(全局常量或场景参数)(2) 漫反射 Diffuse(Lambert ),取决于入射角(图中箭头与法线夹角)夹角余弦:NdotL = max(dot(N, L), 0)I_diffuse = Kd * Il * NdotLKd:材质漫反射系数/底色Il:光源颜色/强度(3 = diff * uLightColor; vec3 specular = 0.3 * spec * uLightColor; vec3 color = (ambient + diffuse = diff * uLightColor; vec3 specular = 0.3 * spec * uLightColor; vec3 color = (ambient + diffuse

    9800编辑于 2026-02-10
  • 来自专栏逍遥剑客的游戏开发

    星际2的地形

    NormalMap 地形纹理都是1024x1024的DXT5格式 混合权重图是2048x2048的A4R4G4B4格式, 估计整个地图使用两张(8通道) 可能是使用了延迟渲染的原因, 地形的纹理都是先混合成一张Diffuse 和一张Normal后再画 镜头近时使用1024x1024的Diffuse RTT, 512x512的Normal RTT 远处使用512x512的Diffuse RTT Diffuse和Normal如果超过 4层就需要用两个Pass做混合 极端情况下, 每画一个Chunk, 需要Diffuse x4, Normal x4, BlendMap x2, RTT x2, DP=5 混合shader不管你是几层混合

    60630发布于 2019-02-20
  • 来自专栏HkingAuditore

    【Unity Shader】绒毛草坪

    (0,1,saturate(dot(worldNormal, worldLight))*shadow); fixed4 diffuseCol =fixed4((diffuse * _LightColor0).rgb + ((1-diffuse) * _ShadowColor * 0.5).rgb,diffuse); fixed specular col * diffuseCol * lerp(0.86,1.4,specular-ambient*0.2) ; fixed3 color = col + diffuse = saturate(saturate(dot(worldNormal, worldLight)) * shadow); fixed4 diffuseCol = fixed4((diffuse * _LightColor0).rgb + ((1-diffuse) * _ShadowColor * 0.5).rgb,diffuse*pow(1.5,FURSTEP+3)); col *=

    71320编辑于 2023-10-26
  • 来自专栏每日一篇技术文章

    SceneKit_入门07_几何体

    学习技术很好玩 创建方法 SCNBox *box = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0]; box.firstMaterial.diffuse.contents ]; 创建平面 让学习成为一种习惯 创建方法: SCNPlane *plane =[SCNPlane planeWithWidth:2 height:2]; plane.firstMaterial.diffuse.contents SCNCylinder *cylinder = [SCNCylinder cylinderWithRadius:1 height:2]; cylinder.firstMaterial.diffuse.contents 创建方法: SCNTube *tube = [SCNTube tubeWithInnerRadius:1 outerRadius:1.2 height:2]; tube.firstMaterial.diffuse.contents addChildNode:torusNode]; 地板 让学习成为一种习惯 创建方法: SCNFloor *floor = [SCNFloor floor]; floor.firstMaterial.diffuse.contents

    1.1K20编辑于 2022-05-13
  • 来自专栏每日一篇技术文章

    SceneKit-真机渲染效果和模拟器不一致

    -8118-4086-958D-2B8390EA3381.png 渲染部分的代码看了一下没什么问题 for (SCNMaterial *material in arr) { material.diffuse.intensity = 0.65; material.diffuse.wrapS = SCNWrapModeRepeat; material.diffuse.wrapT = SCNWrapModeRepeat ; material.diffuse.contents = @"V10004.png"; material.diffuse.contentsTransform = SCNMatrix4MakeScale

    90310发布于 2018-09-14
  • 来自专栏游戏开发之旅

    Shader实例(流光实现)

    vert #pragma fragment frag ENDCG } } FallBack "Diffuse :CJB_King //2017.12.23 Shader "SelfShader/DissolveEffectX" { Properties{ _Diffuse ("Diffuse", Color) = (1,1,1,1) _DissolveColor("Dissolve Color", Color) = (0,0,0,0) ", Float) = 0 } CGINCLUDE #include "Lighting.cginc" uniform fixed4 _Diffuse ("Diffuse", Color) = (1,1,1,1) _DissolveColor("Dissolve Color", Color) = (1,1,1,1)

    2.1K10发布于 2019-12-02
  • 来自专栏字节流动

    NDK OpenGLES3.0 开发(九):光照基础

    冯氏光照模型(Phong Lighting Model)便是其中常用的一个光照模型,它由三种元素光组成,分别是环境光(Ambient Lighting)、散射光(Diffuse Lighting)及镜面光 - fragPos);//当前片段光源照射方向向量 float diff = max(dot(norm, lightDir), 0.0);// dot 表示两个向量的点乘 vec3 diffuse = diffuseStrength * diff * lightColor; //散射光最终强度 vec3 result = diffuse * objectColor; color * a_position); // Ambient float ambientStrength = 0.1; ambient = ambientStrength * lightColor; // Diffuse ); vec3 lightDir = normalize(lightPos - fragPos); float diff = max(dot(unitNormal, lightDir), 0.0); diffuse

    1.1K20发布于 2020-06-02
  • 来自专栏全栈程序员必看

    【Shader】Shader官方示例[通俗易懂]

    Shader "Example/Diffuse Simple" { SubShader { Tags { "RenderType" = "Opaque" } CGPROGRAM (Input IN, inout SurfaceOutput o) { o.Albedo = 1; } ENDCG } Fallback "Diffuse Shader "Example/Diffuse Texture" { Properties { _MainTex ("Texture", 2D) = "white" {} } " } 效果 法线贴图 让我们添加一些法线贴图: Shader "Example/Diffuse Bump" { Properties { _MainTex ("Texture 它与内置的Reflective / Diffuse Shader 非常相似: Shader "Example/WorldRefl" { Properties { _MainTex

    1.4K40编辑于 2022-07-31
  • 来自专栏礼拜八不工作

    和Keyle一起学ShaderForge – Create Base Shader

    = LIGHT_ATTENUATION(i); float3 attenColor = attenuation * _LightColor0.xyz; /////// Diffuse " CustomEditor "ShaderForgeMaterialInspector" } 2.Main中的公开节点 Diffuse(漫反射) 这是我们着色器的主色调,漫反射的颜色来源于光, 上图中阴影部分为入射光线的衰弱区域 Diffuse Power(漫反射的幂) 这是光线衰弱的幂次方,使用大于1的幂时可以用于模拟金属的外观 Specular(镜面反射) 这是你的Shader镜面高光的颜色 Ambient Light(环境光漫反射) 它将光线添加到你的着色器,受漫反射影响(Diffuse),多用于基于图像的照明 Specular Ambient Light(镜面反射环境光) 和Diffuse Ambient Light类似,多了一个镜面反射效果 Diffuse Ambient Occlusion(漫反射环境光遮蔽) 顾名思义,用来抑制Diffuse散发出来的光 Specular Ambient

    46110编辑于 2024-11-01
  • 来自专栏郭艺帆的专栏

    ARKit 进阶:材质

    diffuse diffuse 指定了材质对光照的漫反射。人眼看到物体,实际上人眼接收到物体的漫反射光。所以diffuse实际上是物理的基本样貌,任何光照模型都会用到diffuse这个最基本属性。 图:diffuse ambient ambient指定了材质对环境光的漫反射。 一般情况下,diffuse已经包含环境光与方向光的漫反射,当locksAmbientWithDiffuse为NO时,ambient才会生效。 color = ambient * al + diffuse * max(0, dot(N, L)) 算法的公式就是将两种不同光的漫反射效果相加,lambert 主要根据材质的diffuse与ambient phong 主要根据材质的diffuse与ambient, specular, shininess来计算着色。

    4K01发布于 2017-09-27
  • 来自专栏移动开发面面观

    OpenGL ES——打光

    specular VS diffuse VS ambient 那么,我们在定义一种材质时,该如何定义它的光学特性呢? OpenGL ES为我们提供的思路是:将材料对光的反应分为三部分。 diffuse 除了镜面反射外,我们对物体的大部分视觉认知,来源于漫反射。材料对于光进行漫反射后的颜色,我们称之为diffuse。 通常我们像这样定义: float[] diffuse = {0.5f, 0.5f, 0.5f, 1.0f}; float[] materialDiff = {0.0f, 0.0f, 1.0f, 1.0f mCenterPoint = model.getCentrePoint(); } float[] ambient = {0.9f, 0.9f, 0.9f, 1.0f}; float[] diffuse , STLUtils.floatToBuffer(diffuse)); gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_SPECULAR, STLUtils.floatToBuffer

    1.3K50发布于 2018-07-03
  • 来自专栏每日一篇技术文章

    VR+全景播放器+头控讲解-06

    SCNPlane planeWithWidth:BUTTON_WIDHT*0.8 height:BUTTON_WIDHT*0.8]; playNode.geometry.firstMaterial.diffuse.contents SCNPlane planeWithWidth:BUTTON_WIDHT*0.8 height:BUTTON_WIDHT*0.8]; nextNode.geometry.firstMaterial.diffuse.contents SCNPlane planeWithWidth:BUTTON_WIDHT*0.8 height:BUTTON_WIDHT*0.8]; moreNode.geometry.firstMaterial.diffuse.contents planeWithWidth:BUTTON_WIDHT*0.8 height:BUTTON_WIDHT*0.8]; voiceHighNode.geometry.firstMaterial.diffuse.contents ) { int time = (int) (elapsedTime *(weakSelf.gif.count-1)/3.0); node.geometry.firstMaterial.diffuse.contents

    1K10发布于 2018-09-14
  • 来自专栏每日一篇技术文章

    SceneKit - 提供三种方法解决全景图画面内部透射颠倒的问题

    diffuse.contents = srcImage sphereNode.geometry?.firstMaterial?. diffuse.wrapT = .repeat; sphereNode.geometry?.firstMaterial?. diffuse.wrapS = .repeat; 第三步 给球体内部放置一个相机 let cameraNode = SCNNode() cameraNode.camera = SCNCamera diffuse.contentsTransform = SCNMatrix4MakeScale(-1,1,1); // 纹理坐标翻转一下 这个时候 你会发现什么都看不见 因为球体内部没有灯光 在球体内部加上环境光试试看 diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(-1, 1, 1), 1, 0, 0) 运行效果和上面的方式一样

    1.2K10发布于 2019-06-11
  • 来自专栏centosDai

    Unity——基于ShaderLab实现光照系统

    = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLight)); //环境光+漫反射 o.color = ambient + diffuse; return o; } 2.逐片元光照(Phong Shading) 在片元着色器计算光照;根据每个片元的法线计算光照;效果好计算量大,也叫phong插值; = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLight)); //相加环境光和漫反射 fixed3 color = ambient + diffuse; return fixed4(color,1.0); } 这也是Lambert光照模型的算法; 3.HalfLambert 光照 v社做半条命使用一个标准, = _LightColor0.rgb * _Diffuse.rgb * halfLambert; 4.逐顶点高光 上面说的逐顶点计算光照对非线性光照会有错误; 高光由反射导致,和观察方向、光线方向有关

    9900编辑于 2022-01-04
领券